sort a data matrix by all the values and keep the names
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 <lzhtom at hotmail.com> wrote:
From: zhihuali <lzhtom at hotmail.com> Subject: [R] sort a data matrix by all the values and keep the names To: r-help at stat.math.ethz.ch 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 at 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.