我有一个只有 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/