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 ______________________________________________ R-help@stat.math.ethz.ch 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.