应用功能TRUE / FALSE比率

时间:2018-11-04 10:16:27

标签: r apply

我有一个只有TRUE / FALSE值的数据框

 tf <- as.data.frame(matrix(c(rep(TRUE,5),rep(FALSE,5)),10,10))

,我想计算每列TRUE值的百分比。因此,我编写了以下apply函数,但是该函数仅返回一个空向量:

overlay <- apply(tf,2,function(x) sum(x == TRUE)/nrow(x))

我在做什么错?

3 个答案:

答案 0 :(得分:4)

这应该很快

colMeans(tf)
# V1  V2  V3  V4  V5  V6  V7  V8  V9 V10 
#0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5

答案 1 :(得分:2)

我不知道您为什么使用nrow,但请检查以下内容:

overlay <- apply(tf,2,function(x) sum(x == TRUE)/length(x) * 100)

答案 2 :(得分:2)

匿名函数x中的function(x) sum(x == TRUE)/nrow(x)是对应于特定行的向量。因此,您所需的不是nrow,而是length

apply(tf, 2, function(x) sum(x == TRUE) / length(x))

另一方面,您可以通过矢量化的方式实现

colMeans(tf)
#  V1  V2  V3  V4  V5  V6  V7  V8  V9 V10 
# 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5