2013-05-30 36 views
13

我無法理解的邏輯(布爾值)的屬性值TRUEFALSENA。以下是一些示例:邏輯運算符(AND,OR)與NA,真假

NA | TRUE 
# [1] TRUE 

NA | FALSE 
# [1] NA 

NA & TRUE 
# [1] NA 

NA & FALSE 
# [1] FALSE 

您能解釋這些輸出嗎?

回答

20

要從?Logic引述如下:

NA是一個有效的邏輯對象。如果x或y的分量是NA,如果結果不明確,則結果將爲NA。換句話說,NA & TRUE評估爲NA,但NA & FALSE評估爲FALSE。請參閱下面的 示例。

關鍵在於「不明確」一詞。 NA代表「未知」的東西。所以NA & TRUE可能是真或假,但我們不知道。不管缺失值是什麼,NA & FALSE都是錯誤的。

10

它在help("|")解釋說:

‘NA’ is a valid logical object. Where a component of ‘x’ or ‘y’ 
is ‘NA’, the result will be ‘NA’ if the outcome is ambiguous. In 
other words ‘NA & TRUE’ evaluates to ‘NA’, but ‘NA & FALSE’ 
evaluates to ‘FALSE’. See the examples below. 

從例子中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