Это немного проще, вы можете сделать это так:
m <- matrix(c(0,0,0,0,0,
0,3,3,3,0,
0,3,3,3,0,
0,3,3,3,0,
0,0,0,0,0), ncol = 5, byrow = TRUE)
m
m[2:4, 2:4] <- 900
m
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 900 900 900 0
[3,] 0 900 900 900 0
[4,] 0 900 900 900 0
[5,] 0 0 0 0 0
Обратите внимание, что m[2:4, 2:4] <- rep(900,9)
также будет работать, где rep(900,9)
можно заменить любым вектором (в данном случае, длиной 9).
Таким образом, другой способ может быть
inner_matrix <- matrix(rep(900, 9),ncol=3, byrow=T)
m[2:4, 2:4] <- inner_matrix
Для матрицы> 2 измерений (в данном случае, тензоров)
m <- array(structure(c(0, 0, 0, 0, 0,
0, 3, 3, 3, 0,
0, 3, 3, 3, 0,
0, 3, 3, 3, 0,
0, 0, 0, 0, 0), .Dim = c(5L, 5L, 1L, 1L)), dim=c(5,5,1,1))
m
m[2:4,2:4,1,1] <- rep(900,9)