这似乎是一个愚蠢的问题,请耐心等待。我想确认逗号的计算结果,所以我做了以下操作。
xy <- c(1:10)
ab <- c(10, 2, 1, 6, 8, 6, 7, 2, 10, 6)
# I ran this knowing the number 3 is absent in `ab`
3 %in% c(xy, ab) # output `TRUE` so I thought it evaluates to an OR
# Ran this
3 %in% c(xy & ab) # output `FALSE` as expected
# then ran this
3 %in% c(xy | ab) # output `FALSE` then I got confused, I was expecting same output as in the comma code
我认为
c()
功能可能负责。谁能帮我理解一下吗?
我认为乔恩·斯普林已经在他精彩的评论中解释了几乎所有内容。你的最后一个命令:
3 %in% c(xy | ab) # output `FALSE`
返回
FALSE
并且出乎你的意料,我想是因为你可能错误地认为该命令是:“数字 3 是在 xy 中,还是在 ab 中?这在 R 代码中可以写成:
(3 %in% xy) | (3 %in% ab)
确实会返回
TRUE
(您的期望)。
这里的问题是
c(xy | ab)
首先被评估并返回一个长度为 10 的向量,所有这些都是 TRUE。然后 R 判断 3 是否在 that 向量中,并返回 FALSE。