R: Map over the columns of a data frame

dmap {purrr} | R Documentation

## Map over the columns of a data frame

### Description

`dmap()` is just like `map()` but always returns a data frame. In addition, it handles grouped or sliced data frames.

### Usage

    dmap(.d, .f, ...)

    dmap_at(.d, .at, .f, ...)

    dmap_if(.d, .p, .f, ...)

### Arguments

`.d` | A data frame.
`.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`.
`.at` | A character vector of names or a numeric vector of positions. Only those elements corresponding to `.at` will be modified.
`.p` | A single predicate function, a formula describing such a predicate function, or a logical vector of the same length as `.x`. Alternatively, if the elements of `.x` are themselves lists of objects, a string indicating the name of a logical element in the inner lists. Only those elements where `.p` evaluates to `TRUE` will be modified.

### Details

`dmap_at()` and `dmap_if()` recycle length 1 vectors to the group sizes.

### Examples

    # dmap() always returns a data frame:
    dmap(mtcars, summary)

    # dmap() also supports sliced data frames:
    sliced_df <- mtcars[1:5] %>% slice_rows("cyl")
    sliced_df %>% dmap(mean)
    sliced_df %>% dmap(~ .x / max(.x))

    # This is equivalent to the combination of by_slice() and dmap()
    # with 'rows' collation of results:
    sliced_df %>% by_slice(dmap, mean, .collate = "rows")

[Package purrr version 0.2.2 Index]