This code is from post Interesting tidy eval use cases
library(tidyverse)
df <- tibble(
a = c("b", "d", "l", "m"),
x = c(NA, NA, 1, 3),
y = c(2, NA, 2, 3),
z = c(1, 2, 0, NA)
)
first_match <- function(.f, ...) {
tibble(...) %>%
transpose() %>%
map_dbl(~ purrr::detect(.x, .f) %||% NA)
}
df %>% mutate(new_col = first_match(~ . > 1, x, y, z))
#> # A tibble: 4 x 5
#> a x y z new_col
#> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 b NA 2 1 2
#> 2 d NA NA 2 2
#> 3 l 1 2 0 2
#> 4 m 3 3 NA 3
hadley said:
We're planning on thinking about ways for
first_match()
to have selection semantics so you could simplify further tofirst_match(~ . > 1, x:y)
Can do first_match(~ . > 1, x:y)
now ?