2012-07-26 50 views
1

我想測試以下內容:對於x1中的每個值,測試它是否在x2和之間。基本上如果x2$x2 < x1 < x2$x3是真的返回值爲x1它是真實的。在這種情況下,他們都將是真實的。我很困惑,如果我應該寫一個函數,或者是否有內置的東西來做到這一點?比較載體

x1 <- data.frame(x1=11:20, stringsAsFactors=FALSE) 
> x1 
    x1 
1 11 
2 12 
3 13 
4 14 
5 15 
6 16 
7 17 
8 18 
9 19 
10 20 

x2 <- 1:10 
x3 <- 21:30 
x2 <- data.frame(x2, x3, stringsAsFactors=FALSE) 

> x2 
    x2 x3 
1 1 21 
2 2 22 
3 3 23 
4 4 24 
5 5 25 
6 6 26 
7 7 27 
8 8 28 
9 9 29 
10 10 30 
+1

請問 'x1 [其中(x2 $ x2 Seth 2012-07-26 22:19:16

回答

2

嘗試以下方法:

X1 $ X1 [其中(X1 $ X1> X2 $ X2 & X1 $ X1 < X2 $ X3)]

which返回索引的矢量,其式(在這種情況下,x1$x1 > x2$x2 & x1$x1 < x2$x3成立。然後,我們使用x1$x1[indices]選擇合適的元素。

注意在在使用&代替&&平等,因爲你正在使用矢量而不是單個元素。

+1

這將在沒有'which'的情況下工作,因爲邏輯測試已經返回一個邏輯的向量,您可以用它們進行子集化:'x1 [x1 $ x1> x2 $ x2&x1 $ x1 Justin 2012-07-26 22:27:12

+0

這是一個更簡單的方法 - 謝謝Justin! – Edward 2012-07-26 22:32:52

+0

感謝一羣人,這有助於很多。這是我自己無法想到的一件非常可悲的事情。 – user1079898 2012-07-26 23:00:48