在r中使用grep选择一列时指定列名

时间:2015-06-24 19:31:30

标签: r multiple-columns

我遇到了grep函数的问题。具体来说,当我告诉R使用该函数获取以某个字母开头的所有列时,并且只有一个这样的列,所有产生的是具有代码作为列名的数据,如下所示:

> head(newdat1)
  i1 b2 b1 b17
1  1  1  2   0
2  1  1  2   0
3  1  1  2   0
4  1  1  2   0
5  2  1  1   0
6  3  1  1   1

datformeanfill<-as.data.frame(newdat1[,grep("^i", colnames(newdat1))])
> head(datformeanfill)
newdat1[, grep("^i", colnames(newdat1))]
1                                        1
2                                        1
3                                        1
4                                        1
5                                        2
6                                        3

与我有两个或多个以相同字母开头的列相反:

datnotformeanfill<-as.data.frame(newdat1[,grep("^b", colnames(newdat1))])
> head(datnotformeanfill)
    b2 b1 b17
  1  1  2   1
  2  1  2   1
  3  1  2   1
  4  1  2   1
  5  1  1   1
  6  1  1   2

我们看到列名称被维护,如果我有多个&#34; i&#34;它会这样做。请帮助谢谢!

1 个答案:

答案 0 :(得分:2)

使用

datformeanfill <- newdat1[,grep("^i", colnames(newdat1)), drop=FALSE]

确保您始终返回data.frame。有关详细信息,请参阅?'[.data.frame'