[R] how to use a matrix as an index to another matrix?
Jinsong Zhao
j@zh@o @end|ng |rom ye@h@net
Fri Oct 11 11:43:35 CEST 2019
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
More information about the R-help
mailing list