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.

Reply via email to