我正在尝试使用 dplyr case_when 并传递变量,但结果并不如预期。
例子:
library(dplyr)
mtcars %>%
mutate(cg = case_when(carb <= 2 ~ "low",
carb > 2 ~ "high")) ---this works
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试传递一个变量时,它全部返回为“低”
var <- quo(carb)
mtcars %>%
mutate(cg = case_when(!!var <= 2 ~ "low",
!!var > 2 ~ "high"))
Run Code Online (Sandbox Code Playgroud)
这是一个操作顺序问题,需要使用括号:
quo_function <- function(df, var) {
df %>%
mutate(cg = case_when((!!var) <= 2 ~ "low",
(!!var) > 2 ~ "high"))
}
Run Code Online (Sandbox Code Playgroud)
看看这个帖子这个帖子。