2013-05-14 6 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 

어떻게 매트릭스에서 결과를 최종 값을 기준으로 열을 다시 정렬하고 저장 것인가? 예를 들어, column [, 5]는 가장 높은 최종 값 (101.28328)을 가지므로 가장 왼쪽에 먼저 나열됩니다. 열 [, 1]은 두 번째 등입니다. 감사! 이 답변에 대한 질문을 받았다되지 않은 열, 어디서나 최대를 발견 -

답변

2

이 작동합니다 :

a[,order(a[nrow(a),])] 
0

누군가가

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

편집 (이 최적화 된 코드는 거리가 멀다) ...이 날 이길하지만 것입니다. 프랭크의 대답은 정확합니다.

관련 문제