#r #syntax
#r #синтаксис
Вопрос:
Я пытаюсь понять |
оператор в R. Почему
a = 2
a == 3 | 4
возврат TRUE
в R?
a == 3
и
a == 4
каждый возврат FALSE
так почему возвращается вторая строка TRUE
?
Ответ №1:
Смотрите help(Syntax)
— ==
имеет более высокий приоритет, чем |
.
Итак:
R> a <- 2
R> a == 3 | 4
R> TRUE
R> a == (3 | 4)
R> FALSE
Комментарии:
1. Мораль: всегда используйте несколько дополнительных круглых скобок. Когда-нибудь вы поблагодарите себя в будущем.
2. Это указывает на то, что wort
a == (3 | 4)
не проверяетa
, равно ли оно 3 или 4. Он проверяет, где логическое значение преобразуется в числовое значение.a == TRUE
Итак,3 == (3 | 4)
является ЛОЖНЫМ, но1 == (3 | 4)
является ИСТИННЫМ.
Ответ №2:
Подумайте об этом так:
`|`(a == 3, 4)
`==`(a, 3)
as.logical(2) # TRUE
as.logical(3) # TRUE
as.logical(4) # TRUE
Итак, что происходит, так это то, что обе стороны a == 3
принудительно преобразуются в логические; это вычисляет TRUE == TRUE
, что есть TRUE
. После этого or
возвращается операция между TRUE
и 4
TRUE
.
Ответ №3:
a == 3 | 4
Означает:
Является ли (a равным 3) или (4)?
По совпадению, 4 принимает значение TRUE при приведении к логическому.