2017-12-02 141 views
0

我想使用dplyr case_when並傳遞變量,但結果並不如預期。使用dplyr case_when以編程方式

例子:

library(dplyr) 
mtcars %>% 
    mutate(cg = case_when(carb <= 2 ~ "low", 
         carb > 2 ~ "high")) ---this works 

然而,當我試圖通過一個變量,它返回所有爲 「低」

var <- quo(carb) 
mtcars %>% 
    mutate(cg = case_when(!!var <= 2 ~ "low", 
        !!var > 2 ~ "high")) 

任何幫助,不勝感激!

回答

2

這是操作問題的順序,你需要使用括號:

quo_function <- function(df, var) { 
    df %>% 
    mutate(cg = case_when((!!var) <= 2 ~ "low", 
          (!!var) > 2 ~ "high")) 
} 

看一看這篇文章this post

+0

我能說的最好的是(!! var)可以用var替換。 –