[R] min and max operations on matrix
    Murali.MENON at fortisinvestments.com 
    Murali.MENON at fortisinvestments.com
       
    Wed Jan 20 17:57:31 CET 2010
    
    
  
Folks,
I've got a matrix x as follows:
 
> x <- matrix(c(1,2,3,5,3,4,3,2,1), ncol = 3, byrow = TRUE)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    5    3    4
[3,]    3    2    1
In each row of x, I want to replace the minimum value by -1, the maximum
value by +1 and all other values by 0.
So in the above case I want to end up as follows:
     [,1] [,2] [,3]
[1,]   -1    0    1
[2,]    1   -1    0
[3,]    1    0   -1
I tried the following, which seems to work:
> t(apply(x, 1, function(y) {z <- numeric(NROW(y)); z[which.min(y)] <-
-1; z[which.max(y)]<- 1; z})) 
Is there a neater way to do this?
Thanks,
Murali
    
    
More information about the R-help
mailing list