以下数据集:
df <- read.table(text = " a b c
X Y Z", header = T)
命令
df[, sapply (df[1, ], as.character) %in% c("Y", "X")]
返回
a b
1 X Y
但命令
df[, sapply (df[1, ], as.character) %in% c("Y")]
返回
[1] Y
Levels: Y
而不是
b
1 Y
知道为什么吗?以及如何检索正确的列名称
答案 0 :(得分:2)
可能重复......但要提供答案......
您已陷入R Inferno; 8.1.44的主要陷阱之一&#34;默认情况下,当下标使维度长度为1时,将删除数组维度。使用drop = FALSE进行订阅会覆盖默认值&#34;
因此,这将返回您的期望:
df[, sapply (df[1, ], as.character) %in% c("Y"), drop = FALSE]