我遇到了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;它会这样做。请帮助谢谢!
答案 0 :(得分:2)
使用
datformeanfill <- newdat1[,grep("^i", colnames(newdat1)), drop=FALSE]
确保您始终返回data.frame。有关详细信息,请参阅?'[.data.frame'
。