我无法理解逻辑(布尔)值的属性TRUE
,FALSE
以及NA
与逻辑 OR ( |
) 和逻辑 AND ( &
) 一起使用时的属性。这里有些例子:
NA | TRUE
# [1] TRUE
NA | FALSE
# [1] NA
NA & TRUE
# [1] NA
NA & FALSE
# [1] FALSE
你能解释一下这些输出吗?
我无法理解逻辑(布尔)值的属性TRUE
,FALSE
以及NA
与逻辑 OR ( |
) 和逻辑 AND ( &
) 一起使用时的属性。这里有些例子:
NA | TRUE
# [1] TRUE
NA | FALSE
# [1] NA
NA & TRUE
# [1] NA
NA & FALSE
# [1] FALSE
你能解释一下这些输出吗?
引用自?Logic
:
NA 是一个有效的逻辑对象。如果 x 或 y 的分量为 NA,则如果结果不明确,则结果将为 NA。换句话说,NA & TRUE 的计算结果为 NA,但 NA & FALSE 的计算结果为 FALSE。请参阅下面的示例。
关键是“模棱两可”这个词。NA
代表“未知”的事物。所以NA & TRUE
可能是真或假,但我们不知道。而NA & FALSE
无论缺失值是什么,都将是错误的。
解释help("|")
如下:
NA
是一个有效的逻辑对象。x
如果or的一个组成部分y
是NA
,则结果将是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