R语言如何判断数据框每列两行元素大小并输出对应T/F标识
R 数据框逐列对比两行值的实现方法
问题原因
你原有代码返回结果不符合预期,是因为if_else会保持输入数据的结构:data[1,]>data[2,]是单行数据框结构,所以if_else处理后返回的也是1行5列的宽表,不是你需要的带列名的一维输出格式。
实现方案
方法1:基础R实现
无需加载额外包,直接用基础函数处理即可:
# 构造示例数据 data <- data.frame( A = c(5,4), B = c(1,0), C = c(3,1), D = c(6,8), E = c(3,6) ) # 逐列对比两行值 res <- unlist(ifelse(data[1,] > data[2,], "T", "F")) # 按要求格式打印 print(res, quote = TRUE)
方法2:purrr遍历实现
如果你习惯tidyverse语法,可以用purrr::map_chr逐列处理:
library(purrr) res <- map_chr(data, ~ifelse(.x[1] > .x[2], "T", "F")) print(res, quote = TRUE)
输出结果
两种方法都会得到你需要的输出:
A B C D E "T" "T" "T" "F" "F"
内容的提问来源于stack exchange,提问作者Frontmaniaac
相关产品推荐
相关产品推荐

