/ / Як змінити елементи в одній матриці, індексованої в іншій матриці? - r, петлі, матриця

Як змінити елементи в одній матриці, індексованих в іншу матрицю? - r, петлі, матриця

У мене є дві матриці A і B. Матриця B є двоколонною матрицею, кожен рядок містить один індекс елемента в матриці А. Я хочу змінити ті елементи в матриці 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

Відповіді:

3 для відповіді № 1

Це робиться так

A[B] <- 0;