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?
Logical (Boolean) Operators. Logical expressions, like comparison expressions, return a true (1) or false (0) value when processed. Logical operators combine two comparisons and return the true (1) or false (0) value depending on the results of the comparisons.
If applied to boolean values, the && operator only returns true when both of its operands are true (and false in all other cases), while the || operator only returns false when both of its operands are false (and true in all other cases).
There are five logical operator symbols: tilde, dot, wedge, horseshoe, and triple bar.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With