# [R] Sorting a matrix in an odd way

Kenneth Cabrera krcabrer at epm.net.co
Tue May 13 12:46:25 CEST 2003

```Try this, and tell me if it works.

foo <- matrix(,5,5)
foo[5,1] <- 1
foo[1:3,2] <- 1
foo[3:4,3] <- 1
foo[4:5,4] <- 1
foo[2:4,5] <- 1
foo
[,1] [,2] [,3] [,4] [,5]
[1,]   NA    1   NA   NA   NA
[2,]   NA    1   NA   NA    1
[3,]   NA    1    1   NA    1
[4,]   NA   NA    1    1    1
[5,]    1   NA   NA    1   NA

I don't now if the rest non-NA values are only one, I suppose...

foo[is.na(foo)]<-0

biny<-function(x,l) sum(x*2^((l-1):0))

order(apply(foo,2,biny,nrow(foo)),decreasing=TRUE)

Hope, the idea helps.

Best Regards

Kenneth

Andy Bunn wrote:

>Hi, I have a matrix not unlike this:
>
>foo <- matrix(,5,5)
>foo[5,1] <- 1
>foo[1:3,2] <- 1
>foo[3:4,3] <- 1
>foo[4:5,4] <- 1
>foo[2:4,5] <- 1
>foo
>     [,1] [,2] [,3] [,4] [,5]
>[1,]   NA    1   NA   NA   NA
>[2,]   NA    1   NA   NA    1
>[3,]   NA    1    1   NA    1
>[4,]   NA   NA    1    1    1
>[5,]    1   NA   NA    1   NA
>
>I want to get a vector that is the column numbers as sorted by the first
>non-NA value.
>Like this:
>2,5,3,4,1
>
>I have been able to do this by adding an index and looping the matrix by
>column. Can anybody think of a cleverer way to do this?
>
>
>Andy
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
>
>
>

--
Kenneth Roy Cabrera Torres
Celular +57 (315) 405 9339

```