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

标签 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)并尝试将其作为函数引入来代替“==”,但还没有真正成功。

非常感谢。

最佳答案

您可以通过编写一个进行比较的小辅助函数来完成此操作:

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.

关于R:在彼此范围内匹配向量的分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638517/

相关文章:

r - mclapply 与 parLapply 速度

r - 向facet_wrap中的每个方面添加标题

r - 矩阵和表名/dimnames

r - 如何在 R 中为 is.holiday() chron 包定义假期

r - 在不使用 'for' 构造的情况下创建列表列表的任何更简洁/优雅的方法?

r - 使用 R 的多页 SVG

r - 提取 ( ) 和 % 符号之前的所有值

r - 创建标志,指示年份变量是否在开始:end variables in data.表的范围内

r - 字符串替换数据框中的 ®、°F 等 UTF 特殊字符

根据连续的唯一值重新排列行