Я пытаюсь написать простую функцию, оборачивающуюся вокруг функции 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"))
Как это сделать?