Как работает оператор ИЛИ

Я новичок в 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]=0R понимает: 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)

Другие вопросы по тегам