我不明白逻辑(布尔)值 TRUE
、FALSE
和 NA
在逻辑或 (|
) 和逻辑与 (&
) 中的属性。以下是一些示例:
NA | TRUE
# [1] TRUE
NA | FALSE
# [1] NA
NA & TRUE
# [1] NA
NA & FALSE
# [1] FALSE
你能解释一下这些输出吗?
我不明白逻辑(布尔)值 TRUE
、FALSE
和 NA
在逻辑或 (|
) 和逻辑与 (&
) 中的属性。以下是一些示例:
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
可能为true或false,但我们不知道。而无论缺少值是什么,NA&FALSE
都将为false。
根据 help("|")
的解释:
NA
是一个有效的逻辑对象。在x
或y
的成分中,如果结果不明确,则结果将是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