[R] Vectorize rearrangement within each column
Osorio Roberto
roboso at gmail.com
Fri Jan 19 07:14:31 CET 2007
Consider a matrix like
> ma = matrix(10:15, nr = 3)
> ma
[,1] [,2]
[1,] 10 13
[2,] 11 14
[3,] 12 15
I want to rearrange each column according to row indexes (1 to 3)
given in another matrix, as in
> idx = matrix(c(1,3,2, 2,3,1), nr = 3)
> idx
[,1] [,2]
[1,] 1 2
[2,] 3 3
[3,] 2 1
The new matrix mb will have for each column the corresponding column
of ma indexed by the corresponding column of idx, as in
> mb = ma
> for (j in 1:2) mb[,j] = ma[idx[,j], j]
> mb
[,1] [,2]
[1,] 10 14
[2,] 12 15
[3,] 11 13
Can I avoid the for() loop? I'm specially interested to find out if a
fast implementation using lapply() would be feasible for large input
matrices (analogues of ma and idx) transformed into data frames.
Roberto Osorio
More information about the R-help
mailing list