为什么any()在没有真值时返回NA

geo*_*ory 3 r

所以我们有这种行为:

any(c(TRUE, FALSE, NA))
#> [1] TRUE
any(c(TRUE, NA))
#> [1] TRUE
any(c(FALSE, NA))
#> [1] NA
Run Code Online (Sandbox Code Playgroud)

有人知道返回NA而不是FALSE的理由吗?IMO该函数应该测试是否存在非FALSE值,NA不是.

lmo*_*lmo 5

在帮助文件的值部分中解释了此行为:

如果x中的至少一个值为TRUE,则返回的值为TRUE;如果x中的所有值都为FALSE,则返回FALSE(包括没有值时).否则值为NA.

正如您所注意到的,这似乎与更常用的函数(例如sum和)的行为不同mean,因为在这些函数的向量参数中存在NA值会返回NA.感知中的这个问题被joran的答案清除了,该答案指的是文件?Logic,重新引用:

NA是一个有效的逻辑对象.如果x或y的分量是NA,如果结果不明确,则结果将是NA.换句话说,NA&TRUE评估为NA,但NA&FALSE评估为FALSE.请参阅以下示例.

因此,在模糊性的情况下,例如,计算向量包含NA的均值,或者NA | FALSE缺失值可能为TRUE,NA将是输出.而在其他情况下,例如any(c(TRUE, NA))TRUE | NA,尽管存在缺失值,结果仍然是明确的.在@ Floo0的答案和对问题的一些评论中,这个逻辑可能更清楚.


Ren*_*rop 5

我可能会弄错,但这里的逻辑是:

NA意味着未知的价值 所以问题

(FALSE,NA)的值是否为真?

回答"我不知道"又名NA因为NA可能TRUE但是在你问的那一刻它是未知的.

提出问题

(TRUE,NA)的任何值都是真的吗?

TRUE肯定是第一个值TRUE.

  • 一点也不.这个答案需要在这里,因为在我看来,接受的答案并没有强调为什么这是完全预期的原因.发布它的人很少. (2认同)