R:在相互的范围内匹配向量的分量
我有两个不同的向量,我从中索引了所有可能的完美匹配组合:R:在相互的范围内匹配向量的分量,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, 3
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)
启动您可以通过编写一个小的辅助函数来完成比较:
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.
cmp+1,用于再现代码和样本数据。欢迎来到堆栈溢出。