2013-05-14 53 views
2

我想基於最終列值重新排序R中的現有矩陣,但我似乎無法找到解決方案。我嘗試過命令(),但沒有運氣。我顯然忽略了一些東西。有任何想法嗎?舉例來說,假設我們創建數據的5列的矩陣:如何根據最終列值對矩陣中的列進行排序?

> a <-matrix(100+rnorm(50),10,5) 
> a 
      [,1]  [,2]  [,3]  [,4]  [,5] 
[1,] 101.26878 99.36657 99.32874 99.46449 101.46698 
[2,] 102.28284 102.62506 100.21430 100.54780 100.14608 
[3,] 99.25180 100.93911 101.31455 99.92939 99.87537 
[4,] 99.69423 99.17830 99.20230 99.42162 100.70614 
[5,] 99.03745 99.95904 100.85773 98.39691 100.84777 
[6,] 100.09040 101.66841 98.73320 97.41576 99.36144 
[7,] 99.94181 100.18932 101.26947 99.81551 99.30574 
[8,] 99.15694 98.24990 98.81500 99.26529 100.72547 
[9,] 100.52822 99.43562 101.73370 98.32482 99.30498 
[10,] 100.37140 99.54621 99.37048 99.43794 101.28328 

如何我會重新安排基礎上,最終值的列,並保存在一個矩陣的結果?例如,列[,5]具有最高的最終值(101.28328),所以它將列在最左邊;列[,1]將是第二個,依此類推。謝謝!

回答

0

有人會打我這一點,但..(這是遠遠優化代碼)

maxes <- pmax(a[,1],a[,2],a[,3],a[,4],a[,5]) 
colorder <- order(maxes) 
a.order <- a[,colorder] 

編輯 - 這個答案的任何地方發現的最大之列,這是不被要求提供。弗蘭克的回答是正確的。

相關問題