这可能是一个非常基本的 R 问题……问起来有点不好……但是是否有一些像==
or|
或!
or之类的代码&
来执行以下逻辑功能?
如果
x
== 任何元素的值/包含在向量中y
然后是 TRUE
别的
错误的
这可能是一个非常基本的 R 问题……问起来有点不好……但是是否有一些像==
or|
或!
or之类的代码&
来执行以下逻辑功能?
如果
x
== 任何元素的值/包含在向量中y
然后是 TRUE
别的
错误的
其实和你说的差不多。
any(x == y)
这可以适用于任何长度的 x 和 y,尽管如果 x 和 y 的长度不是彼此的倍数,它会发出警告。如果 x 和 y 的长度相同,那将是最好的。但是,对于 x 是一项的有限情况,那么
x %in% y
也将工作。而且,如果您的 x 与 y 长度不同但大于 1 项,则以下可能是最明智的。
any(x %in% y)
你可以试试
x %in% y
y
向量在哪里。
如果 x 是向量并且 y 是向量并且您想查看两个向量中的所有值,则另一种解决方案是使用 intersect 函数。如果 x 或 y 是标量,这也将起作用。
# Sample Data
x <- 1:40
y <- 35:100
# We know that 35, 36, 37, 38, 39, 40 are in both vectors
intersect(x, y)
[1] 35 36 37 38 39 40
我不知道您要解决的确切问题,但假设您需要知道 y 中的哪些值,这可能对您有用。
如果您只需要一个 TRUE/FALSE 答案而没有看到使用 x %in% y 得到的布尔向量,您可以使用这个:
length(intersect(x, y)) > 0
[1] TRUE