A matrix can be subset by another 2-column matrix, where the first column is the row index and the second column the column index. So
idx = matrix(c(B, col(B)), ncol = 2) A[] <- A[idx] Martin Morgan On 10/11/19, 6:31 AM, "R-help on behalf of Eric Berger" <r-help-boun...@r-project.org on behalf of ericjber...@gmail.com> wrote: Here is one way A <- sapply(1:ncol(A), function(i) {A[,i][B[,i]]}) On Fri, Oct 11, 2019 at 12:44 PM Jinsong Zhao <jsz...@yeah.net> wrote: > Hi there, > > I have two matrices, A and B. The columns of B is the index of the > corresponding columns of A. I hope to rearrange of A by B. A minimal > example is following: > > > set.seed(123) > > A <- matrix(sample(1:10), nrow = 5) > > B <- matrix(c(sample(1:5), sample(1:5)), nrow =5, byrow = FALSE) > > A > [,1] [,2] > [1,] 3 9 > [2,] 10 1 > [3,] 2 7 > [4,] 8 5 > [5,] 6 4 > > B > [,1] [,2] > [1,] 2 1 > [2,] 3 4 > [3,] 1 5 > [4,] 4 3 > [5,] 5 2 > > A[,1] <- A[,1][B[,1]] > > A[,2] <- A[,2][B[,2]] > > A > [,1] [,2] > [1,] 10 9 > [2,] 2 5 > [3,] 3 4 > [4,] 8 7 > [5,] 6 1 > > My question is whether there is any elegant or generalized way to replace: > > > A[,1] <- A[,1][B[,1]] > > A[,2] <- A[,2][B[,2]] > > Thanks in advance. > > PS., I know how to do the above thing by loop. > > Best, > Jinsong > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.