具有NA,TRUE和FALSE的逻辑运算符(AND,OR)

Rem*_*i.b 18 r logical-operators

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

NA | TRUE
# [1] TRUE

NA | FALSE
# [1] NA

NA & TRUE
# [1] NA

NA & FALSE
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)

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

jor*_*ran 27

引用来自?Logic:

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

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


Jos*_*ich 12

它的解释help("|")如下:

NA是一个有效的逻辑对象.其中的一个组成部分x或者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
Run Code Online (Sandbox Code Playgroud)