Question

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?

Was it helpful?

Solution

Do you mean:

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

?

OTHER TIPS

short form gives you a vector.
long form gives you a single value. compare:

   x <- c(TRUE, TRUE, FALSE)
   y <- c(TRUE, FALSE, FALSE)


   X && Y
   X & y

   x || y
   x | y

Another possibility:

!(A * B) && X < Y
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top