Я пытаюсь написать простую функцию, обернутую вокруг функции dplyr:: case_when(). Я прочитал программирование с документацией dplyr на https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html, но не могу понять, как это работает с функцией case_when().
У меня есть следующие данные:
data <- tibble(
item_name = c("apple", "bmw", "bmw")
)
И следующий список:
cat <- list(
item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"
)
Затем я хотел бы написать такую функцию, как:
category_fn <- function(df, ...){
cat1 <- quos(...)
df %>%
mutate(category = case_when((!!!cat1)))
}
К сожалению, category_fn(data,cat)
дает ошибку оценки в этом случае. Я хотел бы получить тот же результат, что и выход, полученный:
data %>%
mutate(category = case_when(item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"))
Каков способ сделать это?