asub
Arbitrary subsetting of arraylike objects at specified indices
Subset arraylike objects at specified indices. asub()
is a S3 generic, with
one method, asub.default
, supplied in the abind
package.
Usage
asub(x, idx, dims = seq(len = max(length(dim(x)), 1)), drop = NULL, ...)
Arguments
 x
 The object to index
 idx
 A list of indices (e.g., a list of a mixture of integer,
character, and logical vectors, but can actually be anything). Can
be just a vector in the case that
length(dims)==1
.NULL
entries in the list will be treated as empty indices.  dims
 The dimensions on which to index (a numeric or integer vector). The default is all of the dimensions.
 drop
 The 'drop' argument to index with (the default is to not supply a 'drop' argument
 ...
 There are no additional arguments allowed for
asub.default
but other methods may use them.
Details
Constructs and evaluates an expression to do the requested indexing.
E.g., for x
with length(dim(x))==4
the call
asub(x, list(c("a","b"), 3:5), 2:3)
will construct and evaluate
the expression x[, c("a","b"), 3:5, ]
, and the call
asub(x, 1, 2, drop=FALSE)
will construct and evaluate
the expression x[, 1, , , drop=FALSE]
.
asub
checks that the elements of dims
are in the range 1
to length(dim(x))
(in the case that x
is a vector,
length(x)
is used for dim(x)
). Other than that, no
checks are made on the suitability of components of idx
as
indices for x
. If the components of idx
have any
outofrange values or unsuitable types, this will be left to the
subsetting method for x
to catch.
Value

A subset of
x
, as returned by x[...]
.
References
~put references to the literature/web site here ~
See Also
Examples
x < array(1:24,dim=c(2,3,4),dimnames=list(letters[1:2],LETTERS[1:3],letters[23:26]))
asub(x, 1, 1, drop=FALSE)
asub(x, list(1:2,3:4), c(1,3))