我尝试编写一个简单的函数来包装 dplyr::case_when() 函数。我在https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html上阅读了dplyr文档的编程,但无法弄清楚它如何与 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"))
这样做的方法是什么?