3

这可能是一个非常基本的 R 问题……问起来有点不好……但是是否有一些像==or|!or之类的代码&来执行以下逻辑功能?

如果

x== 任何元素的值/包含在向量中y

然后是 TRUE

别的

错误的

4

3 回答 3

12

其实和你说的差不多。

any(x == y)

这可以适用于任何长度的 x 和 y,尽管如果 x 和 y 的长度不是彼此的倍数,它会发出警告。如果 x 和 y 的长度相同,那将是最好的。但是,对于 x 是一项的有限情况,那么

x %in% y

也将工作。而且,如果您的 x 与 y 长度不同但大于 1 项,则以下可能是最明智的。

any(x %in% y)
于 2012-10-19T04:30:54.473 回答
5

你可以试试

x %in% y 

y向量在哪里。

于 2012-10-19T04:09:54.890 回答
3

如果 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
于 2012-10-19T12:23:44.993 回答