почему этот код использует == и | операторы приводят к TRUE

Почему это возвращает TRUE:

15 == 1|2|10

Я думал, что будет спрашивать, 15 равно 1 или 2 или 10, что приведет к ЛОЖЬ.

0
Нет, вам нужно сделать 15 == 1 | 15 == 2 | 15 == 10 . Или, может быть, использовать % в% .
добавлено автор joran, источник
Ваше утверждение эквивалентно (15 == 1) | 2 | 10 См. справка (Синтаксис)
добавлено автор G5W, источник

1 ответы

Если вы посмотрите, как R анализирует код, это

15 == 1|2|10

такой же как

(((15 == 1) | 2) | 10)

Где | вернет TRUE, если одно из значений не FALSE (или 0). Таким образом, 15 == 1 - это FALSE , но FALSE | 2 равно TRUE , так как 2 не равно 0. А затем TRUE | 10 также ИСТИНА. Так

( FALSE | TRUE) | TRUE)  == TRUE

Не используйте | для сопоставления одного из нескольких значений. Используйте % in% , чтобы проверить, содержится ли значение в векторе значений.

15 %in% c(1, 2, 10)
2
добавлено