6

ベクトル内の複数の最小値を決定するのに助けが必要です。仮定しましょう、私はベクトルxを持っています:

x<-c(1,10,2, 4, 100, 3)

最小の3つの要素、つまり1、2、3のインデックスを決定したいと思います。インデックスを使用して別のベクトルの対応する要素にアクセスするため、のインデックスが必要です。もちろん、ソートは最小値を提供しますが、ソートする前に実際に発生するインデックスを知りたいです。

4

4 に答える 4

9

インデックスを見つけるためにこれを試してください

which(x %in% sort(x)[1:3])  # this gives you and index vector
[1] 1 3 6

これは、最初、3番目、6番目の要素がベクトルの最初の3つの最小値であり、これらがどの値を試しているかを確認することを意味します。

x[ which(x %in% sort(x)[1:3])]  # this gives the vector of values
[1] 1 2 3

あるいは単に

x[c(1,3,6)]
[1] 1 2 3

重複する値がある場合は、最初に一意の値を選択してから、次のようにインデックスを見つけるためにそれらを並べ替えることができます(@Jeffrey Evansの回答で提案されています)

which(x %in% sort(unique(x))[1:3])
于 2012-11-19T17:08:44.297 に答える
5

下の3つの要素のインデックスが何であるか知りたいということですか?その場合、あなたはorder(x)[1:3]

于 2012-11-19T17:14:42.347 に答える
3

重複する最小値を説明するためにuniqueを使用できます。

x<-c(1,10,2,4,100,3,1)
which(x %in% sort(unique(x))[1:3])
于 2012-11-19T17:17:20.647 に答える
3

rank重複を含む別の方法があります。

 x <- c(x, 3)
 # [1]   1  10   2   4 100   3   3
 which(rank(x, ties.method='min') <= 3)
 # [1] 1 3 6 7
于 2012-11-19T17:25:51.030 に答える