[R] Sorting a matrix in an odd way

Adaikalavan Ramasamy gisar at nus.edu.sg
Tue May 13 09:05:17 CEST 2003


You can use unique since it keeps the ordering intact (ie no sorting).

unique( unlist( apply(foo, 1, function(x) which(!is.na(x)) ) ) )
[1] 2 5 3 4 1


-----Original Message-----
From: Andy Bunn [mailto:abunn at montana.edu] 
Sent: Tuesday, May 13, 2003 12:18 PM
To: 'R-Help'
Subject: [R] Sorting a matrix in an odd way


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?

Thanks, as always, in advance.

Andy

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help




More information about the R-help mailing list