2

完全一致のすべての可能な組み合わせにインデックスを付けた2つの異なるベクトルがあります。

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)を作成し、導入してみました。 「==」の代わりの関数として機能しますが、実際には機能していません。

どうもありがとうございます。

4

1 に答える 1

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.
于 2012-07-24T20:12:32.973 に答える