代替使用sort
:
sort(dMat[,1], index.return = TRUE)$ix[1:6]
結果が同じであることを示すことができるように、行列でset.seed(.)
使用するときに a を追加するとよいでしょう。random numbers
ここでは結果をスキップします。
編集 (正しい解決策):上記の解決策は、最初の要素が常に最小の場合にのみ機能します! 列の最初の要素に常に 5 つの最も近い値を与える正しい解決策は次のとおりです。
> sort(abs(dMat[-1,1] - dMat[1,1]), index.return=TRUE)$ix[1:5] + 1
例:
> dMat <- matrix(c(70,4,2,1,6,80,90,100,3), ncol=1)
# James' solution
> head(order(dMat[-1,1]),5) + 1
[1] 4 3 9 2 5 # values are 1,2,3,4,6 (wrong)
# old sort solution
> sort(dMat[,1], index.return = TRUE)$ix[1:6]
[1] 4 3 9 2 5 1 # values are 1,2,3,4,6,70 (wrong)
# Correct solution
> sort(abs(dMat[-1,1] - dMat[1,1]), index.return=TRUE)$ix[1:5] + 1
[1] 6 7 8 5 2 # values are 80,90,100,6,4 (right)