swh:1:snp:81eadaa089e8253d8469bcef66aa332632c6c669
Tip revision: fdf16693b000f3e309c56091892c61f0ec9fd670 authored by Hans W. Borchers on 21 November 2017, 16:15:00 UTC
version 2.1.1
version 2.1.1
Tip revision: fdf1669
bsxfun.R
##
## b s x f u n . R
##
bsxfun <- function(func, x, y) {
stopifnot(is.numeric(x), is.numeric(y))
# fun <- match.fun(f)
# f <- function(x, y) fun(x, y, ...)
dx <- dim(x); dy <- dim(y)
if ( is.vector(x) && is.vector(y) ) {
z <- mapply(func, x, y)
} else if (is.array(x) && is.array(y) && all(dx == dy)) {
z <- mapply(func, x, y)
dim(z) <- dx
} else {
stop("Argument 'x', 'y' must be vectors or arrays of the same size.")
}
return(z)
}
arrayfun <- function(func, ...) {
# func <- match.fun(func)
dots <- list(...)
if (length(dots) < 1)
stop("Empty list of arrays: Rsult cannot be computed.")
d <- dim(dots[[1]]) # no test on array sizes to be fast
r <- mapply(func, ...) # no try ... catch, number of variables
dim(r) <- d
return(r)
}