TRUE在 R 中,计算逻辑向量中值的数量的最有效/惯用的方法是什么?我可以想到两种方法:
TRUE
z <- sample(c(TRUE, FALSE), 1000, rep = TRUE) sum(z) # [1] 498 table(z)["TRUE"] # TRUE # 498
你喜欢哪个?还有什么更好的吗?
最安全的方法是使用sumwith na.rm = TRUE:
sum
na.rm = TRUE
sum(z, na.rm = TRUE) # best way to count TRUE values
这给出了 1。
NA当逻辑向量包含值时,其他解决方案存在一些问题。
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函数代码)。
table
此外,您应该小心“表”解决方案,以防逻辑向量中没有 TRUE 值。参见例如:
z <- c(FALSE, FALSE) table(z)["TRUE"] # gives you `NA`
或者
z <- c(NA, FALSE) table(z)["TRUE"] # gives you `NA`