| 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 |
logical; attempt to reduce the result to a vector or matrix? |
USE.NAMES |
logical; use names if the first ... argument has names, or if it is a character vector, use that character vector 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.
Vectorize cannot be used with primitive functions as they have
no formal list.
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: use rep.int as rep is primitive
vrep <- Vectorize(rep.int)
vrep(1:4, 4:1)
vrep(times=1:4, x=4:1)
vrep <- Vectorize(rep.int, "times")
vrep(times=1:4, x=42)
mapply(function(x,y) seq_len(x) + y,
c(a= 1, b=2, c= 3), # names from first
c(A=10, B=0, C=-10))
word <- function(C,k) paste(rep.int(C,k), collapse='')
str(mapply(word, LETTERS[1:6], 6:1, SIMPLIFY = FALSE))
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")