Does anyone know a neat/efficient way to replace diagonal elements in array, similar to the use of diag(x) <- value for a matrix? In other words something like this:
> 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
but without the use of a for loop (my arrays are pretty large and this manipulation will already be within a loop).
Many thanks.