detect {purrr} | R Documentation |
Find the value or position of the first match.
detect(.x, .f, ..., .right = FALSE, .p) detect_index(.x, .f, ..., .right = FALSE, .p)
.x |
A list or atomic vector. |
.f |
A function, formula, or atomic vector. If a function, it is used as is. If a formula, e.g.
This syntax allows you to create very compact anonymous functions. If character vector, numeric vector, or list, it
is converted to an extractor function. Character vectors index by name
and numeric vectors index by position; use a list to index by position
and name at different levels. Within a list, wrap strings in |
... |
Additional arguments passed on to |
.right |
If |
.p |
A single predicate function, a formula describing such a
predicate function, or a logical vector of the same length as |
detect
the value of the first item that matches the
predicate; detect_index
the position of the matching item.
If not found, detect
returns NULL
and detect_index
returns 0.
is_even <- function(x) x %% 2 == 0 3:10 %>% detect(is_even) 3:10 %>% detect_index(is_even) 3:10 %>% detect(is_even, .right = TRUE) 3:10 %>% detect_index(is_even, .right = TRUE) # Since `.f` is passed to as_mapper(), you can supply a # lambda-formula or a pluck object: x <- list( list(1, foo = FALSE), list(2, foo = TRUE), list(3, foo = TRUE) ) detect(x, "foo") detect_index(x, "foo")