purrr (version 0.2.2)

map2: Map over multiple inputs simultaneously.

Description

These functions are variants of map() iterate over multiple arguments in parallel. map2 is specialised for the two argument case; pmap allows you to provide any number of arguments in a list.

Usage

map2(.x, .y, .f, ...)
map2_lgl(.x, .y, .f, ...)
map2_int(.x, .y, .f, ...)
map2_dbl(.x, .y, .f, ...)
map2_chr(.x, .y, .f, ...)
map2_df(.x, .y, .f, ..., .id = NULL)
pmap(.l, .f, ...)
pmap_lgl(.l, .f, ...)
pmap_int(.l, .f, ...)
pmap_dbl(.l, .f, ...)
pmap_chr(.l, .f, ...)
pmap_df(.l, .f, ..., .id = NULL)
walk2(.x, .y, .f, ...)
pwalk(.l, .f, ...)

Arguments

.x, .y
Vectors of the same length. A vector of length 1 will be recycled.
.f
A function, formula, or atomic vector.

If a function, it is used as is.

If a formula, e.g. ~ .x + 2, it is converted to a function with two arguments, .x or . and .y. This allows you to create very compact anonymous functions with up to two inputs.

If character or integer vector, e.g. "y", it is converted to an extractor function, function(x) x[["y"]]. To index deeply into a nested list, use multiple values; c("x", "y") is equivalent to z[["x"]][["y"]]. You can also set .null to set a default to use instead of NULL for absent components.

...
Additional arguments passed on to .f.
.id
If not NULL a variable with this name will be created giving either the name or the index of the data frame.
.l
A list of lists. The length of .l determines the number of arguments that .f will be called with. List names will be used if present.

Value

An atomic vector, list, or data frame, depending on the suffix. Atomic vectors and lists will be named if .x or the first element of .l is named.

Details

Note that arguments to be vectorised over come before the .f, and arguments that are supplied to every call come after .f.

pmap() and pwalk() take a single list .l and map over all its elements in parallel.

Examples

Run this code
x <- list(1, 10, 100)
y <- list(1, 2, 3)
map2(x, y, ~ .x + .y)
# Or just
map2(x, y, `+`)

# Split into pieces, fit model to each piece, then predict
by_cyl <- mtcars %>% split(.$cyl)
mods <- by_cyl %>% map(~ lm(mpg ~ wt, data = .))
map2(mods, by_cyl, predict)

Run the code above in your browser using DataCamp Workspace