小编典典

如何计算逻辑向量中的 TRUE 值

all

TRUE在 R 中,计算逻辑向量中值的数量的最有效/惯用的方法是什么?我可以想到两种方法:

z <- sample(c(TRUE, FALSE), 1000, rep = TRUE)
sum(z)
# [1] 498

table(z)["TRUE"]
# TRUE 
#  498

你喜欢哪个?还有什么更好的吗?


阅读 185

收藏
2022-08-02

共1个答案

小编典典

最安全的方法是使用sumwith na.rm = TRUE

sum(z, na.rm = TRUE) # best way to count TRUE values

这给出了 1。

NA当逻辑向量包含值时,其他解决方案存在一些问题。

参见例如:

z <- c(TRUE, FALSE, NA)

sum(z) # gives you NA
table(z)["TRUE"] # gives you 1
length(z[z == TRUE]) # f3lix answer, gives you 2 (because NA indexing returns values)

此外table,解决方案效率较低(查看table函数代码)。

此外,您应该小心“表”解决方案,以防逻辑向量中没有 TRUE 值。参见例如:

z <- c(FALSE, FALSE)
table(z)["TRUE"] # gives you `NA`

或者

z <- c(NA, FALSE)
table(z)["TRUE"] # gives you `NA`
2022-08-02