2016-11-01 15 views
2

私はN行と6列を持つ行列をRで表しています。私はその行の最大値で行を並べ替えたいと思います。各行内の列の相対的な順序に基づいて行列を並べ替える

具体的には、最初に列1の値(その行の値)が最も高いすべての行を特定し、最初にその行に表示する必要があります。次に、列2(その行について)で最も高い値を持つすべての行を特定し、その行の次の行に表示する必要があります。等々。

どうすればいいですか?


例の場合: それは最高値が最後の列にあるだから、次にソート結果は、最後に最初の行を置きますのは、私は行列

1 2 3 4 5 6 
3 5 4 4 3 5 
7 1 2 3 2 4 

があるとしましょう。第3列が最初に配置されます。これは、最も高い値が第1列にあるためです。それは中間の行を間に置くことになります。これは、2番目の列に最大値があるためです。 結果:

7 1 2 3 2 4 
3 5 4 4 3 5 
1 2 3 4 5 6 

答えて

6

使用max.colorder

matだった
mat[ order(max.col(mat, "first")), ] 

#  [,1] [,2] [,3] [,4] [,5] [,6] 
#[1,] 7 1 2 3 2 4 
#[2,] 3 5 4 4 3 5 
#[3,] 1 2 3 4 5 6 

mat <- structure(c(1L, 3L, 7L, 2L, 5L, 1L, 3L, 4L, 2L, 4L, 4L, 3L, 5L, 
3L, 2L, 6L, 5L, 4L), .Dim = c(3L, 6L)) 

それは計算しているため、それが動作:

\ 1。各行の最大値の列の位置:

\ 2これらの最大値に基づく行の順序:

order(max.col(mat, "first")) 
#[1] 3 2 1 
関連する問題