Как работает оператор ИЛИ
Я новичок в R. Я хочу подтвердить правильность моего понимания концепции.
При работе с логическим оператором ИЛИ я не могу понять вывод ниже. Случай 1 имеет результат "ложь", когда оба вторых элемента равны 0, тогда как он "истина", когда это числа>0. Это потому, что 0 всегда считается "FAlse", и в этом случае оба эти значения являются "ложными"?
Случай 1
v <- c(3,0,TRUE,2+2i)
t <- c(4,0,FALSE,2+3i)
print(v|t)
#[1] TRUE FALSE TRUE TRUE
Дело 2
v <- c(3,0,TRUE,2+2i)
t <- c(3,0,FALSE,2+3i)
print(v|t)
#[1] TRUE FALSE TRUE TRUE
2 ответа
Вы делаете поэлементное логическое сравнение обоих векторов v и t. И так как любое число> 0 оценивается как TRUE
если преобразовать в логическое, вы получите этот вывод. (пожалуйста, обратите внимание на комментарий ниже)
Вы можете думать об этом на заднем плане (для случая 1):
as.logical(3) | as.logical(4)
as.logical(0) | as.logical(0)
TRUE | TRUE
as.logical(2+2i) | as.logical(2+2i)
что дает наш результат:
TRUE FALSE TRUE TRUE
R рассматривает TRUE как 1 и FALSE как 0. Ваше понимание верно. У вас есть поэлементная проверка и в случае, когда v[2]=0
а также t[2]=0
R понимает: 0 | 0
при этом 0, т.е. FALSE OR FALSE = FALSE
,
Вы можете проверить это, изменив один из 0 входов (v[2]=0 и t[2]=0) на что-то !=0
,
В качестве комментария, хотя: вы должны принять во внимание, что вы не можете использовать c()
создавать переменные с разными классами в них. R интерпретирует все вводимые вами данные как комплексные числа в этом случае. Я имею в виду, что TRUE
преобразуется в 1+0i
и ЛОЖЬ 0+0i
(проверить:print(v)
>v
[1] -3+0i 0+0i 1+0i 0+2i
)