2012-10-19 62 views
2

这可能是一个非常基本的R问题......并且对于询问有点不好......但是有一些代码,如==|!&等等执行以下逻辑功能?“任何”操作的逻辑条件

如果

x ==任何元素/包含在矢量值y

然后TRUE

其他

FALSE的

回答

10

它实际上非常接近你所说的。

any(x == y) 

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

x %in% y 

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

any(x %in% y) 
+0

谢谢!特别是如果x长于1的扩展名。 –

+0

我不太同意这个答案,并且个人认为李敏钊的答案更符合问题的要求。我认为如果x或y的长度为1但是过去这不符合原始问题描述的情况,则此工作正常。 – Dason

+0

这不起作用?我的第一个和最后一个版本可以使用任何长度的x和y。这让他们更安全,以防止您将订单混淆。 – John

5

您可以尝试

x %in% y 

其中y是矢量。

+0

的感谢!正是我所需要的... –

2

另一种解决方案是使用交叉功能,如果x是一个向量,y是一个向量,你希望看到在两种载体的所有值。如果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回答没有看到一个布尔值向量,你会得到在%Y用x%,您可以使用此:

length(intersect(x, y)) > 0 
[1] TRUE