asplit Split Array/Matrix By Its Margins
Description
Split an array or matrix by its margins.
Usage
asplit(x, MARGIN)
Arguments
x | an array, including a matrix. |
MARGIN | a vector giving the margins to split by. E.g., for a matrix |
Details
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.
Value
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.
Examples
## 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))
Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.