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

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

我想计算每列的 TRUE 值的百分比。因此,我编写了以下应用函数,但它只返回一个空向量:
overlay <- apply(tf,2,function(x) sum(x == TRUE)/nrow(x))

我究竟做错了什么?

最佳答案

匿名函数中的 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

关于r - 应用函数 TRUE/FALSE 比率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53139723/

10-12 17:34
查看更多