¿Alguien sabe una forma ordenada/eficiente para reemplazar elementos diagonales en conjunto, similar al uso de diag(x) <- value
para una matriz? En otras palabras, algo como esto:reemplazar elementos diagonales en una matriz
> m<-array(1:27,c(3,3,3))
> for(k in 1:3){
+ diag(m[,,k])<-5
+ }
> m
, , 1
[,1] [,2] [,3]
[1,] 5 4 7
[2,] 2 5 8
[3,] 3 6 5
, , 2
[,1] [,2] [,3]
[1,] 5 13 16
[2,] 11 5 17
[3,] 12 15 5
, , 3
[,1] [,2] [,3]
[1,] 5 22 25
[2,] 20 5 26
[3,] 21 24 5
pero sin el uso de un bucle (mis arreglos son bastante grande y esta manipulación ya estarán dentro de un bucle).
Muchas gracias.
+1 muy agradable. Es más rápido que mi código de función. –
buen trabajo, ¡salud! – gjabel