One possibility is: > x <- data.frame(x1=c(1,7),x2=c(4,6),x3=c(8,2)) > names <- t(matrix(rep(names(x),times=nrow(x)),nrow=ncol(x))) > m <- as.matrix(x) > ind <- order(m) > df <- data.frame(name=names[ind],value=m[ind]) > df name value 1 x1 1 2 x3 2 3 x2 4 4 x2 6 5 x1 7 6 x3 8
--- On Tue, 23/9/08, zhihuali <[EMAIL PROTECTED]> wrote: > From: zhihuali <[EMAIL PROTECTED]> > Subject: [R] sort a data matrix by all the values and keep the names > To: [EMAIL PROTECTED] > Received: Tuesday, 23 September, 2008, 9:54 AM > Dear all, > > If I have a data frame > x<-data.frame(x1=c(1,7),x2=c(4,6),x3=c(8,2)): > x1 x2 x3 > 1 4 8 > 7 6 2 > > I want to sort the whole data and get this: > x1 1 > x3 2 > x2 4 > x2 6 > x1 7 > x3 8 > > If I do sort(X), R reports: > Error in order(list(x1 = c(1, 7), x2 = c(4, 6), x3 = c(8, > 2)), decreasing = FALSE) : > unimplemented type 'list' in > 'orderVector1' > > The only way I can sort all the data is by converting it to > a matrix: > > sort(as.matrix(x)) > [1] 1 2 4 6 7 8 > > But now I lost all the names attributes. > > Is it possible to sort a data frame and keep all the names? > > Thanks! > > Zhihua Li > > _________________________________________________________________ > [[elided Hotmail spam]] > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, > reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.