1
我有两个矩阵A和B.矩阵B是一个两列矩阵,每行包含矩阵A中元素的一个索引。我想更改矩阵A中的那些元素,这些元素由矩阵B中的每一行索引,为0.如何更改在另一个矩阵中索引的矩阵中的元素?
有没有办法避免使用下面显示的循环?
> A <- matrix(1:12, 3, 4)
> B <- matrix(c(1, 2, 2, 2, 3, 4), byrow = TRUE, ncol = 2)
> A
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> B
[,1] [,2]
[1,] 1 2
[2,] 2 2
[3,] 3 4
> for (i in 1:nrow(B)) {
+ A[B[i, 1], B[i, 2]] <- 0
+ }
> A
[,1] [,2] [,3] [,4]
[1,] 1 0 7 10
[2,] 2 0 8 11
[3,] 3 6 9 0
真的不认为这会工作。真棒! – stanekam
这确实是一个很好的子集划分方法。你可以在''['''Details' /'矩阵和数组'''上阅读更多内容。 – Henrik
从来没有想到这一点。非常感谢你! –