Vectorize
Vectorize a Scalar Function
Vectorize
creates a function wrapper that vectorizes the
action of its argument FUN
.
Usage
Vectorize(FUN, vectorize.args = arg.names, SIMPLIFY = TRUE, USE.NAMES = TRUE)
Arguments
 FUN
 function to apply, found via
match.fun
.  vectorize.args
 a character vector of arguments which should be
vectorized. Defaults to all arguments of
FUN
.  SIMPLIFY
 logical or character string; attempt to reduce the
result to a vector, matrix or higher dimensional array; see
the
simplify
argument ofsapply
.  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.
Details
The arguments named in the vectorize.args
argument to
Vectorize
are the arguments passed in the ...
list to
mapply
. Only those that are actually passed will be
vectorized; default values will not. See the examples.
Vectorize
cannot be used with primitive functions as they do
not have a value for formals
.
It also cannot be used with functions that have arguments named
FUN
, vectorize.args
, SIMPLIFY
or
USE.NAMES
, as they will interfere with the Vectorize
arguments. See the combn
example below for a workaround.
Value

A function with the same arguments as
FUN
, wrapping a call to
mapply
.
Examples
library(base)
# We 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)
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
require(graphics)
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, length.out = 50)
K < seq(0, 0.15, length.out = 40)
SSvals < outer(Vm, K, vSS, Treated$rate, Treated$conc)
contour(Vm, K, SSvals, levels = (1:10)^2, xlab = "Vm", ylab = "K")
# combn() has an argument named FUN
combnV < Vectorize(function(x, m, FUNV = NULL) combn(x, m, FUN = FUNV),
vectorize.args = c("x", "m"))
combnV(4, 1:4)
combnV(4, 1:4, sum)
Community examples
Looks like there are no examples yet.