Split an array or matrix by its margins.
an array, including a matrix.
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
vapply, one can obtain variants
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
included and not included in
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.