A toolbox for R arrays. Flexibly split, bind, reshape, modify, subset and name arrays.
A toolbox for working with R arrays in a functional programming style. Flexibly split, bind, reshape, modify, subset, and name arrays.
The package provides:
split_on_dim() and split_along_dim() which take an array and
return a list.
bind_on_dim() and bind_as_dim() take a list and return an array.
modify_along_dim() takes an array, calls the passed function
.f() on each subset of the specified dimension, and returns an
array of the same shape. (think of this as a safer and sometimes
faster alternative to base::apply() that is guaranteed to return
an array of the same shape as it received)
extract_dim() a wrapper around [ that allows you to specify the
dimension being subset as a function argument. For example,
extract_dim(X, 1, idx) will extract idx on the first dimension,
regardless how many dimensions are in the array X. Contrast this
with the base alternative X[idx,,], where you have to match the
number of commas , to the number of dimensions in X.
Many of the functions have two variants *_rows() and *_cols()
for the two most common case of the first and last dimension. For
example split_on_rows() which is equivalent to
split_on_dim(X, 1) and split_on_cols() which is equivalent to
split_on_dim(X, -1)
set_dim() and set_dimnames(), pipe-friendly and more flexible
versions of dim<- and dimnames<-
dim2()<-, set_dim2(), array2(), which reshape or fills arrays
using row-major (C-style) semantics
A handful of lower-level helpers that abstract out patterns commonly
encountered while working with arrays, for example expand_dims()
(the inverse of base::drop(), or seq_along_rows() (a combination
of seq_along() and nrow()).
A set of functions that help encode atomic vectors as onehot()
binary matrix’s and decode_onehot() back into atomic vectors. (for
example if training a neural network with keras)
Many of the functions work recursively if provided a list of arrays.
You can install listarrays from CRAN with:
install.packages("listarrays")
Or install the development version from github with:
devtools::install_github("t-kalinowski/listarrays")