2013-05-30 19 views
13

Tôi không thể hiểu được tính chất của logic (boolean) đánh giá cao TRUE, FALSENA khi được sử dụng với logic OR (|) và logic AND (&). Dưới đây là một số ví dụ:Các toán tử logic (AND, OR) với NA, TRUE và FALSE

NA | TRUE 
# [1] TRUE 

NA | FALSE 
# [1] NA 

NA & TRUE 
# [1] NA 

NA & FALSE 
# [1] FALSE 

Bạn có thể giải thích các kết quả này không?

Trả lời

20

Để trích dẫn từ ?Logic:

NA là một đối tượng logic hợp lệ. Khi một thành phần của x hoặc y là NA, kết quả sẽ là NA nếu kết quả là mơ hồ. Nói cách khác NA & TRUE đánh giá là NA, nhưng NA & FALSE sẽ tính là FALSE. Xem các ví dụ bên dưới.

Chìa khóa có từ "mơ hồ". NA đại diện cho thứ gì đó "không xác định". Vì vậy, NA & TRUE có thể đúng hoặc sai, nhưng chúng tôi không biết. Trong khi đó, NA & FALSE sẽ là false bất kể giá trị bị thiếu là gì.

10

Nó giải thích trong 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. 

Từ các ví dụ trong 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 
Các vấn đề liên quan