R:使用列名替换数据框> 0中的值

时间:2014-03-17 10:10:20

标签: r

我有一个像这样的数据框

ColumnName1 ColumnName2 ColumnName3...
   0.0         0.2          0.0   
   0.2         0.0          0.0  

在此数据框中,始终有一个(且只有一个!)列的值> 0。因此,我希望在此单元格中使用列名,而不是值0.2。所以最后我想要一个新的数据帧,只显示值大于0的列。我能做到这一点吗?

ColumnName2
ColumnName1
...

这正确地选择了数据:

Test[Test>0]

但是这总是返回NULL:

colnames(Test[Test>0])

2 个答案:

答案 0 :(得分:1)

继续使用布尔值,您可以尝试:

colnames(tab)[colSums(t(tab>0)*(1:ncol(tab)))]
# or
apply(tab>0, 1, function(x) colnames(tab)[x])

答案 1 :(得分:1)

这样的事可能

apply(df, 1, function(x){names(x)[x > 0]})
# [1] "ColumnName2" "ColumnName1"