mapply {base} | R Documentation |

## Apply a function to multiple list or vector arguments

### Description

`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.

### Usage

mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,
USE.NAMES = TRUE)
Vectorize(FUN, vectorize.args = arg.names, SIMPLIFY = TRUE,
USE.NAMES = TRUE)

### Arguments

`FUN` |
function to apply, found via `match.fun` . |

`...` |
arguments to vectorize 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` . |

### Details

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.

### Value

`mapply`

returns a list, vector, or matrix.

`Vectorize`

returns a function with the same arguments as `FUN`

,
but wrapping a call to `mapply`

.

### See Also

`sapply`

,
`outer`

### Examples

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")

[Package

*base* version 2.5.0

Index]