I cannot understand the properties of logical (boolean) values TRUE
, FALSE
and NA
when used with logical OR (|
) and logical AND (&
). Here are some examples:
NA | TRUE
# [1] TRUE
NA | FALSE
# [1] NA
NA & TRUE
# [1] NA
NA & FALSE
# [1] FALSE
Can you explain these outputs?
To quote from ?Logic
:
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.
The key there is the word "ambiguous". NA
represents something that is "unknown". So NA & TRUE
could be either true or false, but we don't know. Whereas NA & FALSE
will be false no matter what the missing value is.