2012-04-20 8 views
1

私は以前に持っていた値のベクトル内の隣接する値の間に定義された間隔の間にランダムに生成された数を "ビン"しようとしています。したがって、本質的には次のようになります。Rヘルプ:間隔を決定し、数値をビンします。

101の値を101から0まで含むベクトルA xという乱数を生成します。さて、vectorAの中で互いに隣り合っている2つの数字の間の間隔を調べたいのですが?最後に、区間が見つかると、その2つの値を返します。

if文があります。 if(x < vectorA [k] | x> vectorA [k + 1])、forループの下でif文はvectorAのすべてのインクリメントを通過できます。

実際のビン間隔値を取得して何かを計算する必要があるため、私はRのブレークメソッドから遠ざかっていきたいと思います。

提案が参考になります。ベンが指摘したように、findIntervalはあなたの友達です

おかげ

+0

findInterval ... –

答えて

2

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 
関連する問題