[R] Summary: Re: Q: sort a matrix by picking up columns?
Yuyun Jessie Yang
yuyun at stat.wisc.edu
Sun Oct 17 18:37:22 CEST 1999
Thank Douglas Bates, Jan Schelling, Renaud Lancelot for teaching me the
do.call() function, and thank John Bjornar Bremnes for teaching me the
format() function. I would like to also thank the others who contribute
their inputs. Here is a brief summary of replies so far.
A function shown below will do what I need:
(This is copied from Renaud Lancelot's reply to r-help list.)
> SortMat <- function(Mat, Sort)
{
m <- do.call("order", as.data.frame(Mat[, Sort]))
Mat[m, ]
}
Another trick by John Bjornar Bremnes also works on my small elemantary
example. It helped me learn another function format(). I haven't tried it
on my bigger data sets yet though:
a <- c(1,3,6,8,10,13)
Mat[ order( apply(format(Mat[,a]), 1, paste, collapse="") ), ]
Jessie
==================== the original question =========================
On Wed, 13 Oct 1999, Yuyun Jessie Yang wrote:
> Hi,
>
> I am wondering how to write a function which sorts a matrix by giving a
> vector of column numbers.
>
> Suppose we have a matrix (or data frame) "Mat" and I want to obtain
> order(Mat[,1], Mat[,3], Mat[,6,], Mat[,8], Mat[,10], Mat[,13])
> in order to sort the matrix by those columns. Is there a way to write a
> function so that I can give a vector of the column numbers
> c(1,3,6,8,10,13) and do the sorting? Here we know that we cannot just
> write order(Mat[,c(1,3,6,8,10,13)]), which would give a wrong answer.
>
> Thanks for any input.
>
> Jessie
>
> Yuyun Jessie Yang
> Dissertator, Department of Statistics
> University of Wisconsin-Madison
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list