36 lines
No EOL
1.1 KiB
R
36 lines
No EOL
1.1 KiB
R
#' @title Cell array
|
|
#' @description Creates an array of zeros
|
|
#' @param n a the first dimension (or both, if sz is not passed)
|
|
#' @param sz the second dimension (or 1st and 2nd, if not passed)
|
|
#' @param expandable if TRUE, output is a list (so it can take different
|
|
#' lengths)
|
|
#' @param ... Other dimensions
|
|
#' @return An array of zeroes with the dimensions passed on call
|
|
cell <- function(n, sz = c(n, n), expandable=FALSE, ...) {
|
|
|
|
# Uglyly figuring out if the third arg is an extra dim --- #
|
|
|
|
sz3 <- vector()
|
|
if (!is.logical(expandable)) {
|
|
sz3 <- expandable
|
|
expandable <- FALSE
|
|
}
|
|
args <- c(as.list(environment()), list(...))
|
|
exp <- args$expandable
|
|
extra_dims <- c(sz3, args[names(args) == ""])
|
|
|
|
# Creating output vector --------------------------------- #
|
|
|
|
if (exp) {
|
|
return(vector("list", length = n))
|
|
}
|
|
if (length(sz) == 1 & length(extra_dims) == 0) {
|
|
return(array(0, dim = c(n, sz)))
|
|
} else if (length(extra_dims) > 0) {
|
|
return(array(0, dim = c(n, sz, extra_dims)))
|
|
} else if (length(sz) == 2) {
|
|
return(array(0, dim = sz))
|
|
} else {
|
|
return(array(0, dim = c(n, sz, ...)))
|
|
}
|
|
} |