【发布时间】:2017-02-14 12:43:09
【问题描述】:
所以我们有这种行为:
any(c(TRUE, FALSE, NA))
#> [1] TRUE
any(c(TRUE, NA))
#> [1] TRUE
any(c(FALSE, NA))
#> [1] NA
有人知道返回 NA 而不是 FALSE 的理由吗? IMO 函数应该测试是否存在非 FALSE 值,而 NA 不是。
【问题讨论】:
-
因为
FALSE|NA返回NA -
来自帮助文件的值部分:“如果 x 中的至少一个值为 TRUE,则返回的值为 TRUE,如果 x 中的所有值都为 FALSE,则返回值为 FALSE(包括如果没有值)。否则值为 NA。"
-
使用
any(na.omit(c(FALSE, NA)))总是得到 TRUE 或 FALSE。 -
我们在
any中也有na.rm参数。将其设置为TRUE以删除NA。 -
对于它的价值,如果你认为 NA 是一个未知值,R 的行为是非常明智的,因此可能是 TRUE 或 FALSE。这就是为什么
c(TRUE, NA)被确定,而c(FALSE, NA)不是。
标签: r