2

以前に持っていた値のベクトル内の隣接する値の間に定義された間隔の間に、ランダムに生成されたいくつかの数値を「ビン化」しようとしています。したがって、本質的に、私は次のものを持っています:

vectorAx と呼ばれる乱数を生成します。ここで、vectorA で互いに隣接する 2 つの数値の間のどの間隔に属しているかを確認したいと思いますか? 最後に、間隔が見つかったら、これら 2 つの値を返します。

if ステートメントが進行中です。if (x < vectorA[k] | x > vectorA[k+1])、for ループの下で、if ステートメントが vectorA のすべてのインクリメントを通過できるようにします。

実際のビン間隔値を取得し、それらを使用して何かを計算する必要があるため、R の break メソッドから離れたいと思います。

4

1 に答える 1

4

ベンが指摘したように、findIntervalあなたの友達です。

vectorAただし、昇順でソートする必要があります。

findRange <- function(x, v) {
  i <- findInterval(x, v)
  list(from=i, to=i+1L)
}

v <- seq(1, 100, 10) # Must be sorted in ascending order!
x <- runif(10, 1, 100)
findRange(x, v)

vectorA が高い順に並べ替えられている場合は、逆にしてインデックスを変更する必要があります。

iRev <- findInterval(x, rev(vectorA))
iLow <- length(vectorA) - iRev
iHigh <- iLow + 1L
于 2012-04-20T22:27:33.857 に答える