为什么这段代码使用==和| 运算符结果为TRUE

Ste*_*eve 1 r operators

为什么返回TRUE:

15 == 1|2|10
Run Code Online (Sandbox Code Playgroud)

我认为这将是15与1或2或10相同,这将导致FALSE.

MrF*_*ick 5

如果你看一下R如何解析代码,这个

15 == 1|2|10
Run Code Online (Sandbox Code Playgroud)

是相同的

(((15 == 1) | 2) | 10)
Run Code Online (Sandbox Code Playgroud)

|将返回TRUE,如果值中的一个不存在虚假(或0).所以,15==1FALSEFALSE | 2就是TRUE因为2不为0,然后TRUE | 10也是如此.所以

( FALSE | TRUE) | TRUE)  == TRUE
Run Code Online (Sandbox Code Playgroud)

不要|用于匹配多个值中的一个.使用%in%测试如果值包含在值的向量.

15 %in% c(1, 2, 10)
Run Code Online (Sandbox Code Playgroud)