I try to write a simple function wrapping around the dplyr::case_when() function. I read the programming with dplyr documentation on https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html but can't figure out how this works with the case_when() function.
I have the following data:
data <- tibble(
item_name = c("apple", "bmw", "bmw")
)
And the following list:
cat <- list(
item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"
)
Then I would like to write a function like:
category_fn <- function(df, ...){
cat1 <- quos(...)
df %>%
mutate(category = case_when((!!!cat1)))
}
Unfortunately category_fn(data,cat)
gives an evaluation error in this case. I would like to obtain the same output as the output obtained by:
data %>%
mutate(category = case_when(item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"))
What is the way to do this?
See Question&Answers more detail:os