Hi, Here is an implementation.
> rot90 function(a,times=1) { row <- dim(a)[1] col <- dim(a)[2] dep <- dim(a)[3] if (times %% 2 == 1){t <- row; row <- col; col <- t} tempA <- array(NA, c(row,col,dep)) for (i in 1:dep) { temp <- a[,,i] for (j in 1:times) { temp <- cbind(sapply(1:row,function(x){rev(temp[x,])})) } tempA[,,i] <- temp } return(tempA) } > A , , 1 [,1] [,2] [,3] [1,] "a" "b" "c" [2,] "d" "e" "f" [3,] "g" "h" "i" , , 2 [,1] [,2] [,3] [1,] "j" "k" "l" [2,] "m" "n" "o" [3,] "p" "q" "r" > rot90(A,3) , , 1 [,1] [,2] [,3] [1,] "g" "d" "a" [2,] "h" "e" "b" [3,] "i" "f" "c" , , 2 [,1] [,2] [,3] [1,] "p" "m" "j" [2,] "q" "n" "k" [3,] "r" "o" "l" -- View this message in context: http://r.789695.n4.nabble.com/Rotate-array-by-90-tp4702862p4702870.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.