R:在彼此范围内匹配向量的分量

时间:2012-07-24 20:06:17

标签: 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)并尝试将其作为一个函数来代替“==”,但它还没有真正解决。

非常感谢你。

1 个答案:

答案 0 :(得分: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.