util.array | R Documentation |
These functions can be used to turn a list into an array and extract or replace values or take the sum along a certain dimension of an array.
list2array(l) slice(arr, d = NULL, i = 1, value = NULL) dimSums(arr, d = 1, i = NULL) slice.affinity(affinity, d = 1, i = 1)
l |
a list. |
arr |
an array. |
d |
numeric, what dimension to use. |
i |
numeric, what slice to use. |
value |
values to assign to the portion of an array specified by |
affinity |
list, output from |
list2array
turns a list of array
s, each with the same dimensions, into a new array having one more dimension whose size is equal to the number of initial arrays.
slice
extracts or assigns values from/to the i
th slice(s) in the d
th dimension of an array. Values are assigned to an array if value
is not NULL. This function works by building an expression containing the extraction operator ([
).
slice.affinity
performs a slice operation on the values element of the affinity variable (which should be the output of affinity
).
dimSums
sums an array along the d
th dimension using only the i
th slices in that dimension. If i
is NULL, all slices in that dimension are summed together. For matrices, dimSums(x,1)
has the same result as colSums(x)
and dimSums(x,2)
has the same result as rowSums(x)
.
# start with a matrix mat <- matrix(1:12, ncol = 3) # pay attention to the following when # writing examples that test for identity! identical(1 * mat, mat) # FALSE # create two matrices that are multiples of the first a <- 1 * mat b <- 2 * mat # these both have two dimensions of lengths 4 and 3 dim(a) # 4 3 # combine them to make an array with three dimensions x <- list2array(list(a, b)) # the third dimension has length 2 dim(x) # 4 3 2 # the first slice of the third dimension slice(x, 3) # a # the second slice of the third dimension slice(x, 3, 2) # b # 'slice' works just like the bracket operator slice(x, 1) # x[1, , ] slice(x, 1, 2) # x[2, , ] slice(x, 2, 1) # x[, 1, ] slice(x, 2, 1:2) # x[, 1:2, ] # let us replace part of the array y <- slice(x, 3, 2, value = a) # now the second slice of the third dimension == a slice(y, 3, 2) # a # and the sum across the third dimension == b dimSums(y, 3) # b # taking the sum removes that dimension dim(y) # 4 3 2 dim(dimSums(y, 1)) # 3 2 dim(dimSums(y, 2)) # 4 2 dim(dimSums(y, 3)) # 4 3 # working with an 'affinity' object basis("CHNOS+") species("alanine") a1 <- affinity(O2 = c(-80, -60)) # i.e. pH=7 a2 <- affinity(O2 = c(-80, -60), pH = c(0, 14, 7)) # in the 2nd dimension (pH) get the 4th slice (pH=7) a3 <- slice.affinity(a2, 2, 4) all.equal(a1$values, a3$values) # TRUE
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.