在 r 中使用 grep 选择一列时指定列名
specifying column name when one column is selected using grep in r
我的 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
我们看到列名被维护的地方,如果我有多个 "i",它也是一样的。请帮忙谢谢!
使用
datformeanfill <- newdat1[,grep("^i", colnames(newdat1)), drop=FALSE]
以确保您总能得到 data.frame。详情请参阅 ?'[.data.frame'
。
我的 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
我们看到列名被维护的地方,如果我有多个 "i",它也是一样的。请帮忙谢谢!
使用
datformeanfill <- newdat1[,grep("^i", colnames(newdat1)), drop=FALSE]
以确保您总能得到 data.frame。详情请参阅 ?'[.data.frame'
。