mapply {base} | R Documentation |
mapply
is a multivariate version of sapply
.
mapply
applies FUN
to the first elements of each ...
argument, the second elements, the third elements, and so on.
Arguments are recycled if necessary.
Vectorize
returns a new function that acts as if mapply
was called.
mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE) Vectorize(FUN, vectorize.args = arg.names, SIMPLIFY = TRUE, USE.NAMES = TRUE)
FUN |
Function to apply, found via match.fun . |
... |
Arguments to vectorise over (list or vector). |
MoreArgs |
A list of other arguments to FUN . |
SIMPLIFY |
Attempt to reduce the result to a vector or matrix? |
USE.NAMES |
If the first ... argument is character and the result does not already have names, use it as the names. |
vectorize.args |
A character vector of arguments which should be
vectorized. Defaults to all arguments to FUN . |
The arguments named in the vectorize.args
argument to
Vectorize
correspond to the arguments passed in the ...
list to mapply
. However, only those that are actually passed
will be vectorized; default values will not. See the example below.
mapply
returns a list, vector, or matrix.
Vectorize
returns a function with the same arguments as FUN
,
but wrapping a call to mapply
.
mapply(rep, 1:4, 4:1) mapply(rep, times=1:4, x=4:1) mapply(rep, times=1:4, MoreArgs=list(x=42)) # Repeat the same using Vectorize vrep <- Vectorize(rep) vrep(1:4, 4:1) vrep(times=1:4, x=4:1) vrep <- Vectorize(rep, "times") vrep(times=1:4, x=42) f <- function(x=1:3, y) c(x,y) vf <- Vectorize(f, SIMPLIFY = FALSE) f(1:3,1:3) vf(1:3,1:3) vf(y=1:3) # Only vectorizes y, not x # Nonlinear regression contour plot, based on nls() example SS <- function(Vm, K, resp, conc) { pred <- (Vm * conc)/(K + conc) sum((resp - pred)^2 / pred) } vSS <- Vectorize(SS, c("Vm", "K")) Treated <- subset(Puromycin, state == "treated") Vm <- seq(140, 310, len=50) K <- seq(0, 0.15, len=40) SSvals <- outer(Vm, K, vSS, Treated$rate, Treated$conc) contour(Vm, K, SSvals, levels=(1:10)^2, xlab="Vm", ylab="K")