keep {purrr} | R Documentation |
keep()
and discard()
are opposites. compact()
is a handy
wrapper that removes all empty elements.
keep(.x, .p, ...)
discard(.x, .p, ...)
compact(.x, .p = identity)
.x |
A list or vector. |
.p |
For For |
... |
Additional arguments passed on to |
These are usually called select
or filter
and reject
or
drop
, but those names are already taken. keep()
is similar to
Filter()
, but the argument order is more convenient, and the
evaluation of the predicate function .p
is stricter.
rep(10, 10) %>%
map(sample, 5) %>%
keep(function(x) mean(x) > 6)
# Or use a formula
rep(10, 10) %>%
map(sample, 5) %>%
keep(~ mean(.x) > 6)
# Using a string instead of a function will select all list elements
# where that subelement is TRUE
x <- rerun(5, a = rbernoulli(1), b = sample(10))
x
x %>% keep("a")
x %>% discard("a")
# compact() discards elements that are NULL or that have length zero
list(a = "a", b = NULL, c = integer(0), d = NA, e = list()) %>%
compact()