asplit {base} | R Documentation |
Split an array or matrix by its margins.
asplit(x, MARGIN)
x |
an array, including a matrix. |
MARGIN |
a vector giving the margins to split by.
E.g., for a matrix |
The values of the splits can also be obtained (less efficiently) by
split(x, slice.index(x, MARGIN))
.
apply
always simplifies common length results, so
attempting to split via apply(x, MARGIN, identity)
does not
work (as it simply gives x
). By chaining asplit
with
lapply
or vapply
, one can obtain variants
of apply
which do not auto-simplify.
A “list array” with dimension dv and each element an
array of dimension de and dimnames preserved as available, where
dv and de are, respectively, the dimensions of x
included and not included in MARGIN
.
## A 3-dimensional array of dimension 2 x 3 x 4: d <- 2 : 4 x <- array(seq_len(prod(d)), d) x ## Splitting by margin 2 gives a 1-d list array of length 3 ## consisting of 2 x 4 arrays: asplit(x, 2) ## Spltting by margins 1 and 2 gives a 2 x 3 list array ## consisting of 1-d arrays of length 4:a asplit(x, c(1, 2)) ## Compare to split(x, slice.index(x, c(1, 2))) ## A 2 x 3 matrix: (x <- matrix(1 : 6, 2, 3)) ## To split x by its rows, one can use asplit(x, 1) ## or less efficiently split(x, slice.index(x, 1)) split(x, row(x))