Hello,
I am learning R as part of the overall curriculum for the Google Data Analysis certificate. I am currently on Lesson 7, Week 3 "More on R operators".
The lesson explains the following
Logical AND (&&) and OR (||)
The main difference between element-wise logical operators (&, |) and logical operators (&&, ||) is the way they apply to operations with vectors. The operations with double signs, AND (&&) and logical OR (||), only examine the first element of each vector. The operations with single signs, AND (&) and OR (|), examine all the elements of each vector.
For example, imagine you are working with two vectors that each contain three elements: c(3, 5, 7) and c(2, 4, 6). The element-wise logical AND (&) will compare the first element of the first vector with the first element of the second vector (3&2), the second element with the second element (5&4), and the third element with the third element (7&6).
Now check out this example in R code.
First, create two variables, x and y, to store the two vectors:
x <- c(3, 5, 7)
y <- c(2, 4, 6)
Then run the code with a single ampersand (&). The output is boolean (TRUE or FALSE).
x < 5 & y < 5
[1] TRUE FALSE FALSE
When you compare each element of the two vectors, the output is TRUE, FALSE, FALSE. The first element of both x (3) and y (2) is less than 5, so this is TRUE. The second element of x is not less than 5 (it’s equal to 5) but the second element of y is less than 5, so this is FALSE (because you used AND). The third element of both x and y is not less than 5, so this is also FALSE.
Now, run the same operation using the double ampersand (&&):
x < 5 && y < 5
[1] TRUE
In this case, R only compares the first elements of each vector: 3 and 2. So, the output is TRUE because 3 and 2 are both less than 5.
I was successfull in reproducing the output of x < 5 & y < 5. However, when I attempted to run x < 5 && y < 5, I get the following error:
Error in x < 5 && y < 5 : 'length = 3' in coercion to 'logical(1)'
I attempted to try x < 5 || y < 5 as well, but unfortunately received another error:
Error in x < 5 || y < 5 : 'length = 3' in coercion to 'logical(1)'
Is anyone able to explain why these errors are being triggered despite following exactly what the course detailed I should do?