从包含非零的数据框中提取列名

时间:2014-03-01 19:02:01

标签: r

1我有一个对象向量,每个对象对应一列数字,并希望生成一个名称向量,只有向量中的名称,其列不仅为零。

a<-c(0,0,0,0,0,0,0,0,0,0,0,0)
b<-c(1,3,2,5,4,2,1,5,6,7,3,2)
c<-c(0,0,0,0,0,0,0,0,0,0,0,0)
d<-c(1,1,4,5,2,2,1,1,6,2,3,3)
e<-c(0,0,0,0,0,0,0,0,0,0,0,0)
f<-c(1,3,2,5,4,2,1,5,6,7,3,2)
g<-c(0,0,0,0,0,0,0,0,0,0,0,0)
h<-c(1,1,4,5,2,2,1,1,6,2,3,3)

x<-data.frame(a,b,c,d,e,f,g,h)

x<- x[x != "0"]

提取所有非零的元素的向量,但是我喜欢提取所有不包含零行的列名。

谢谢

3 个答案:

答案 0 :(得分:3)

names(x)[colSums(pmax(x != 0)) > 0]

答案 1 :(得分:1)

这是一种查找包含至少一个非零值的所有列的列名的方法。

tmp <- colSums(x != 0)
#  a  b  c  d  e  f  g  h 
#  0 12  0 11  0 12  0 11 

names(x)[as.logical(tmp)]
# [1] "b" "d" "f" "h"

答案 2 :(得分:1)

与其他人相似。

names(x)[colSums(x)>0]
# [1] "b" "d" "f" "h"