R 基于行值提取列
以下数据集:R 基于行值提取列,r,R,以下数据集: df <- read.table(text = " a b c X Y Z", header = T) 返回 a b 1 X Y 但是命令 df[, sapply (df[1, ], as.character) %in% c("Y")] 返回 [1] Y Levels: Y 而不是 b 1 Y 知道为什么吗?以及如何检索正确的列名(很可能是重复的),但要提供答案 您已经陷入了这样一个主要陷阱:当订阅使维度长度为1时,
df <- read.table(text = " a b c
X Y Z", header = T)
返回
a b
1 X Y
但是命令
df[, sapply (df[1, ], as.character) %in% c("Y")]
返回
[1] Y
Levels: Y
而不是
b
1 Y
知道为什么吗?以及如何检索正确的列名(很可能是重复的),但要提供答案 您已经陷入了这样一个主要陷阱:当订阅使维度长度为1时,默认情况下会删除数组的维度。使用drop=FALSE进行订阅将覆盖默认值 因此,这将返回您期望的结果:
df[, sapply (df[1, ], as.character) %in% c("Y"), drop = FALSE]
在[.data.frame,即df[,sapply df[1,]中使用drop=FALSE,在%cY中使用.character%,drop=FALSE]相关,可能由@RomanLuštrikp回答的重复可能是
df[, sapply (df[1, ], as.character) %in% c("Y"), drop = FALSE]