purrr (version 0.2.2)

map2: Map over multiple inputs simultaneously.


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.


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, ...)


.x, .y
Vectors of the same length. A vector of length 1 will be recycled.
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.
If not NULL a variable with this name will be created giving either the name or the index of the data frame.
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.


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.


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.


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