Albert Vilella wrote:
> Hi all,
> 
> I would like to know if it is possible to sort the columns and rows in
> a matrix given a specified order of their colnames and rownames. For
> example:
> 
> I would like the original matrix:
>   
>      RNO  FRU   ANG  CEL  DAR  PTR
> RNO 3.45 1.35  2.16 2.25 1.43 1.20
> FRU 1.31  Inf  2.22 2.36 1.34 1.40
> ANG 1.30 1.30 11.61 1.37 1.33 1.35
> CEL 1.34 1.35  1.37  Inf 1.37 1.40
> DAR 1.40 1.29  2.29 2.39 9.62 1.48
> PTR 1.08 1.30  2.06 2.17 1.39 8.17
> 
> To be sorted in a top/down and left/right way in this order
> instead: "FRU","ANG","CEL","PTR","RNO","DAR".

X <- round(matrix(rnorm(36), ncol=6), 2)

colnames(X) <- c("RNO", "FRU", "ANG", "CEL", "DAR", "PTR")

rownames(X) <- c("RNO", "FRU", "ANG", "CEL", "DAR", "PTR")

myord <- c("FRU", "ANG", "CEL", "PTR", "RNO", "DAR")

X
       RNO   FRU   ANG   CEL   DAR   PTR
RNO -0.99  0.03 -0.78 -0.55  0.01 -0.64
FRU -0.50 -0.67  2.05  0.28  0.86  0.20
ANG -0.87  0.48 -0.26  0.00 -0.39 -0.18
CEL -0.71  0.55  1.32  0.36 -0.53 -0.53
DAR  0.92 -1.28  0.92 -0.19  0.56 -0.86
PTR -0.60 -0.95 -0.17 -1.23  0.41 -0.36

X[myord,myord]
       FRU   ANG   CEL   PTR   RNO   DAR
FRU -0.67  2.05  0.28  0.20 -0.50  0.86
ANG  0.48 -0.26  0.00 -0.18 -0.87 -0.39
CEL  0.55  1.32  0.36 -0.53 -0.71 -0.53
PTR -0.95 -0.17 -1.23 -0.36 -0.60  0.41
RNO  0.03 -0.78 -0.55 -0.64 -0.99  0.01
DAR -1.28  0.92 -0.19 -0.86  0.92  0.56

> Thanks in advance,
> 
>     Albert.
> 
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to