Как работает оператор ‘|’ в R?

#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 при приведении к логическому.