1. ホーム
  2. r

[解決済み] 論理ベクトルにおけるTRUE値の数え方

2022-04-20 22:06:32

質問

の数を数えるのに最も効率的な方法は何ですか? TRUE の値は、論理ベクトルに含まれるのでしょうか?2つの方法が思い浮かびます。

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

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

どちらがお好みですか?もっといいものはないですか?

解決方法は?

最も安全な方法は sum と共に 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 関数を使用することができます)。

また、quot;table"ソリューションでは、論理ベクトルにTRUE値が存在しない場合に注意が必要です。例えば、以下を参照してください。

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

または

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