Message-ID: <5A3D018CBDC36B4F8FF6DB52DDF3B82D01C11F19@BE-S0500-V22.adroot.local>
Date: 2010-01-20T16:57:31Z
From: Murali.MENON at fortisinvestments.com
Subject: min and max operations on matrix
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