On 6/7/06, Romain Francois <[EMAIL PROTECTED]> wrote: > Le 07.06.2006 11:20, [EMAIL PROTECTED] a écrit : > > Spencer Graves a écrit : > > > > > >> I agree it would be great to sort the variables in a correlation > >> matrix to make it easier to read and see patterns. I don't know any > >> functions for doing that. If it were my problem, I might "order" the > >> variables by their first principal component. There may also be some > >> cluster analysis way to do that, but I don't know it well enough to say. > >> Hope this helps. > >> Spencer Graves > >> > > > > Thanks for your answer Spencer. > > > > Here is a first result of a very simple and naive approach. > > http://7d4.com/r/ > > > > Of course, there is no assumption the sorting is "optimal", > > but on this little example it helps the matrix being > > more readable. > > > > Vincent > > > Hello Vincent, > > Ahhh, the double for loop, the semicolon, the return call. you still > believe in R code looking like C don't you. > Try this one : > > matrix.sort2 <- function(M, fun = function(m) colSums(abs(m)) ){ > M[or <- order(fun(M) , decreasing=T), or] > }
Even if this works I don't think its guaranteed since one cannot be sure the first argument, or<-..., is evaluated before the second, or. Also use TRUE in case there is a T variable in workspace: matrix.sort3 <- function(M, fun = function(m) colSums(abs(m)) ) { or <- order(fun(M), decreasing = TRUE) M[or, or] } ______________________________________________ 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