2012-10-19 97 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