Search code examples
rcomparisonvectorizationlogical-operatorsrelational

Logical operators - short (relational) vs long (vector) forms


I am getting a bit confused by the use of the short and long forms of logical operators in R.

If I have the following values

A <- FALSE
B <- TRUE
X <- 3
Y <- 2

I would like to evaluate NOT(A) OR NOT(B) AND X < Y

I expect FALSE given the parameters

This is the expression I have found to evaluate this in R so it returns FALSE as I expect:

!A & X < Y || !B & X < Y

Can I eliminate the repeated X < Y comparison?


Solution

  • Do you mean:

    > (!A || !B) && X < Y
    [1] FALSE
    

    ?