我试图使用dplyr case_when并传递变量,但结果并不像预期的那样。
示例:
library(dplyr)
mtcars %>%
mutate(cg = case_when(carb <= 2 ~ "low",
carb > 2 ~ "high")) ---this works
然而,当我尝试传递一个变量时,它会返回全部为&#34; low&#34;
var <- quo(carb)
mtcars %>%
mutate(cg = case_when(!!var <= 2 ~ "low",
!!var > 2 ~ "high"))
答案 0 :(得分:3)
这是一个操作顺序问题,你需要使用括号:
quo_function <- function(df, var) {
df %>%
mutate(cg = case_when((!!var) <= 2 ~ "low",
(!!var) > 2 ~ "high"))
}
看一下这篇文章this post。