base (version 3.6.2)

aperm: Array Transposition


Transpose an array by permuting its dimensions and optionally resizing it.


aperm(a, perm, …)
# S3 method for default
aperm(a, perm = NULL, resize = TRUE, …)
# S3 method for table
aperm(a, perm = NULL, resize = TRUE, keep.class = TRUE, …)



the array to be transposed.


the subscript permutation vector, usually a permutation of the integers 1:n, where n is the number of dimensions of a. When a has named dimnames, it can be a character vector of length n giving a permutation of those names. The default (used whenever perm has zero length) is to reverse the order of the dimensions.


a flag indicating whether the vector should be resized as well as having its elements reordered (default TRUE).


logical indicating if the result should be of the same class as a.

potential further arguments of methods.


A transposed version of array a, with subscripts permuted as indicated by the array perm. If resize is TRUE, the array is reshaped as well as having its elements permuted, the dimnames are also permuted; if resize = FALSE then the returned object has the same dimensions as a, and the dimnames are dropped. In each case other attributes are copied from a.

The function t provides a faster and more convenient way of transposing matrices.


Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

See Also

t, to transpose matrices.


Run this code
# interchange the first two subscripts on a 3-way array x
x  <- array(1:24, 2:4)
xt <- aperm(x, c(2,1,3))
stopifnot(t(xt[,,2]) == x[,,2],
          t(xt[,,3]) == x[,,3],
          t(xt[,,4]) == x[,,4])

UCB <- aperm(UCBAdmissions, c(2,1,3))
summary(UCB) # UCB is still a contingency table
# }

Run the code above in your browser using DataLab