在dplyr::mutate中传递公式表达式

在dplyr::mutate中传递公式表达式,r,dplyr,mutate,R,Dplyr,Mutate,是否有方法将公式表达式传递到mutate以创建新变量 expression1 <- formula(ifelse(Var1 == 9, 0, Var1)) df <- data.frame(Var1 = sample(1:10, 10, replace = TRUE), Var2 = sample(1:10, 10, replace = TRUE)) %>% mutate(new_var = expression1) expr

是否有方法将公式表达式传递到mutate以创建新变量

expression1 <- formula(ifelse(Var1 == 9, 0, Var1))

df <- data.frame(Var1 = sample(1:10, 10, replace = TRUE),
                 Var2 = sample(1:10, 10, replace = TRUE)) %>%
      mutate(new_var = expression1)


expression1如果它是一个字符串,那么我们可以解析它

library(dplyr)
expression1 <-  'ifelse(Var1 == 9, 0, Var1)'
df %>% 
   mutate(new_var = eval(rlang::parse_expr(expression1)))
数据
df
rlang
更喜欢使用表达式或QUOSURE而不是公式。最好使用

expression1 <- rlang::expr(ifelse(Var1 == 9, 0, Var1))

df <- data.frame(Var1 = sample(1:10, 10, replace = TRUE),
                 Var2 = sample(1:10, 10, replace = TRUE)) %>%
  mutate(new_var = !!expression1)

expression1如果这回答了您的问题,您可以单击“接受答案”将此问题标记为已回答@user8304241
df <- data.frame(Var1 = sample(1:10, 10, replace = TRUE),
                 Var2 = sample(1:10, 10, replace = TRUE)) 
expression1 <- rlang::expr(ifelse(Var1 == 9, 0, Var1))

df <- data.frame(Var1 = sample(1:10, 10, replace = TRUE),
                 Var2 = sample(1:10, 10, replace = TRUE)) %>%
  mutate(new_var = !!expression1)