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 ______________________________________________ R-help@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.