我尝试编写一个简单的函数,用于包装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)
会产生评估错误。 我希望获得与以下输出相同的输出:
很抱歉,在这种情况下,category_fn(data,cat)
会引发评估错误。我希望获得与以下代码输出相同的结果:
data %>%
mutate(category = case_when(item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"))
怎样做才能实现这个?