逗号、AND 和竖线运算符“|”

问题描述 投票:0回答:1

这似乎是一个愚蠢的问题,请耐心等待。我想确认逗号的计算结果,所以我做了以下操作。

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()
功能可能负责。谁能帮我理解一下吗?

r logical-operators
1个回答
0
投票

我认为乔恩·斯普林已经在他精彩的评论中解释了几乎所有内容。你的最后一个命令:

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。

© www.soinside.com 2019 - 2024. All rights reserved.