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
Никогда не думал об этом. Большое спасибо! –