2012-07-24 42 views
2

範圍內我有我已經索引的完美匹配的各種可能組合兩個不同的載體:R:匹配向量的組件中的相互

starts <- c(54, 54, 18, 20, 22, 22, 33, 33, 33, 37, 42, 44, 44, 51, 11, 17, 19, 19, 19, 19, 22, 23, 23, 24, 24) 
ends <- c(22, 14, 14, 14, 14, 14, 14, 14, 14, 24, 24, 25, 25, 25, 25, 26, 26, 29, 30, 31, 32, 33, 33, 33, 33) 

which(outer(starts, ends, "=="), arr.ind=TRUE) 

現在,而不是試圖找到完全匹配,我想要找到屬於彼此特定範圍內的組件的組合:例如+/- 5。我已經創建了一個範圍(-5:5),並嘗試將它作爲函數代替「==」 ,但它並沒有真正解決。

非常感謝。

+2

+1可重複的代碼和樣本數據。歡迎來到Stack Overflow。 – Andrie 2012-07-24 20:13:35

回答

2

你可以寫一個小的輔助函數,它比較要這樣做:

cmp <- function(x, y, cutoff=5){abs(x-y) <= cutoff} 

which(outer(starts, ends, cmp), arr.ind=TRUE) 

     row col 
    [1,] 3 1 
    [2,] 4 1 
    [3,] 5 1 
    [4,] 6 1 
    [5,] 16 1 
    [6,] 17 1 
    [7,] 18 1 
     ... etc. 
+0

我對此非常陌生,而且工作得很好。謝謝! – 2012-07-24 20:17:25