[R] sort a data matrix by all the values and keep the names

Moshe Olshansky m_olshansky at yahoo.com
Tue Sep 23 02:40:56 CEST 2008


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.



More information about the R-help mailing list