Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Question about 'or' and 'and' operators in R?

I have a general question about the or and and operators in R.

In the below example, I am assigning a value to 2 variables x and y and Im just doing some logical operations on them. But when I wrap the expression in parenthesis, the result changes… and I’m wondering why or what is the logic behind this? For example:

x = 10
y = 2

# x or y is equal to 2
>x|y == 2
[1] TRUE

But when I add parenthesis:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

> (x|y) == 2 
[1] FALSE

Additionally, if I just check the x:

> x|x == 2
[1] TRUE
> (x|x) == 2 
[1] FALSE

Similarily for &:

> x&y == 2
[1] TRUE
> (x&y)==2
[1] FALSE

I know this might be a basic question, but the logic behind this isn’t as intuitive as I originally thought! I know there are lots of resources online talking about these operators.. but none of them seem to answer this type of question directly.
I was wondering what is exactly going on here?

>Solution :

The reason relates to conversion of non-zero values to TRUE and zero to FALSE

> as.logical(x)
[1] TRUE
> as.logical(0)
[1] FALSE

When we use | (OR), it checks whether any of the elements are non-zero, and thus returns TRUE, whereas in &, both elements should be non-zero

> x|y
[1] TRUE

and when we compare with 2, it is not equal because the lhs is logical, when coerced to 1 (binary values correspond to TRUE/FALSE for 1/0), and rhs is 2

> (x|y) == 2 
[1] FALSE
> (x|y) == 1
[1] TRUE

In addition, there is operator precedence when we don’t wrap them inside brackets

x&(y == 2)
[1] TRUE

It returns TRUE because x is non zero, and y ==2 returns TRUE, thus both returns TRUE

> y==2
[1] TRUE
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading