选择r中字符串中找不到的数据框中的列名

时间:2015-07-01 20:08:02

标签: r string

我目前有ndat,一个包含项目及其各自数据的数据框,如下所示:

> glimpse(ndat)
Observations: 203
Variables:
$ i5 (dbl) 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...
$ i4 (dbl) 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...
$ i3 (dbl) 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...
$ i2 (dbl) 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2...
$ i1 (dbl) 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...

我也有" newDV"和" newCV"这是包含ndat中找到的几个项目的项目名称的字符串,如下所示:

> newCV
[1] "i3" "i2"
> newDV
[1] "i1"

我想要做的是让ndat包含未包含在newCV或newDV中的项目,因此最终看起来像:

> glimpse(ndat)
Observations: 203
Variables:
$ i5 (dbl) 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...
$ i4 (dbl) 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...

我尝试了以下内容:

ndat<-as.data.frame(ndat[!(ndat %in% c(newCV,newDV))])

但是这似乎只适用于字符串到字符串,而不是使用字符串来指定数据框中的列。有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您只需按ndat的列名称而不是其值进行过滤,例如

ndat[,!(names(ndat) %in% c(newCV, newDV))]
相关问题