| map_if {purrr} | R Documentation |
Apply a function to each element of a vector conditionally
Description
The functions map_if() and map_at() take .x as input, apply
the function .f to some of the elements of .x, and return a
list of the same length as the input.
-
map_if()takes a predicate function.pas input to determine which elements of.xare transformed with.f. -
map_at()takes a vector of names or positions.atto specify which elements of.xare transformed with.f.
Usage
map_if(.x, .p, .f, ..., .else = NULL)
map_at(.x, .at, .f, ..., .progress = FALSE)
Arguments
.x |
A list or atomic vector. |
.p |
A single predicate function, a formula describing such a
predicate function, or a logical vector of the same length as |
.f |
A function, specified in one of the following ways:
|
... |
Additional arguments passed on to the mapped function. We now generally recommend against using # Instead of x |> map(f, 1, 2, collapse = ",") # do: x |> map(\(x) f(x, 1, 2, collapse = ",")) This makes it easier to understand which arguments belong to which function and will tend to yield better error messages. |
.else |
A function applied to elements of |
.at |
A logical, integer, or character vector giving the elements to select. Alternatively, a function that takes a vector of names, and returns a logical, integer, or character vector of elements to select.
|
.progress |
Whether to show a progress bar. Use |
See Also
Other map variants:
imap(),
lmap(),
map2(),
map_depth(),
map(),
modify(),
pmap()
Examples
# Use a predicate function to decide whether to map a function:
iris |> map_if(is.factor, as.character) |> str()
# Specify an alternative with the `.else` argument:
iris |> map_if(is.factor, as.character, .else = as.integer) |> str()
# Use numeric vector of positions select elements to change:
iris |> map_at(c(4, 5), is.numeric) |> str()
# Use vector of names to specify which elements to change:
iris |> map_at("Species", toupper) |> str()