R: Map over multiple inputs simultaneously.

map2 {purrr} | R Documentation

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

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

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

### Examples

    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)

[Package purrr version 0.2.2 Index]