26

我无法理解逻辑(布尔)值的属性TRUEFALSE以及NA与逻辑 OR ( |) 和逻辑 AND ( &) 一起使用时的属性。这里有些例子:

NA | TRUE
# [1] TRUE

NA | FALSE
# [1] NA

NA & TRUE
# [1] NA

NA & FALSE
# [1] FALSE

你能解释一下这些输出吗?

4

2 回答 2

32

引用自?Logic

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

关键是“模棱两可”这个词。NA代表“未知”的事物。所以NA & TRUE可能是真或假,但我们不知道。而NA & FALSE无论缺失值是什么,都将是错误的。

于 2013-05-30T19:19:34.307 回答
14

解释help("|")如下:

NA是一个有效的逻辑对象。x如果or的一个组成部分yNA,则结果将是NA如果结果不明确。换句话说,NA & TRUE评估为NA,但NA & FALSE 评估为FALSE。请参阅下面的示例。

从中的示例help("|")

x <- c(NA, FALSE, TRUE)
names(x) <- as.character(x)
outer(x, x, "&") ## AND table
#        <NA> FALSE  TRUE
# <NA>     NA FALSE    NA
# FALSE FALSE FALSE FALSE
# TRUE     NA FALSE  TRUE

outer(x, x, "|") ## OR  table
#        <NA> FALSE TRUE
#  <NA>    NA    NA TRUE
# FALSE    NA FALSE TRUE
#  TRUE  TRUE  TRUE TRUE
于 2013-05-30T19:20:36.937 回答