使用subset()时确定导致“未定义列选定”的列名称错误

时间:2015-12-10 19:56:35

标签: r subset

我正在尝试使用

从非常大的数据帧中对大数据帧进行子集化
data.new <- subset(data, select = vector)

其中vector是一个包含我想要隔离的列名的字符串。当我这样做时,我得到了

Error in `[.data.frame`(x, r, vars, drop = drop) : 
  undefined columns selected

有没有办法确定向量中哪个特定列名未定义?通过反复试验,我将其缩小到大约400,但这仍然无济于事。

1 个答案:

答案 0 :(得分:5)

找到不是%in%数据框names()的向量元素。

工作示例:

dd <- data.frame(a=1,b=2)
subset(dd,select=c("a"))
##   a
## 1 1

现在尝试一些不起作用的东西:

v <- c("a","d")
subset(dd,select=v)
## Error in `[.data.frame`(x, r, vars, drop = drop) : 
##    undefined columns selected

v[!v %in% names(dd)]
## [1] "d"

或者

setdiff(v,names(dd))
## [1] "d"

?match中示例代码的最后几行显示了类似的情况。