根据条件循环创建新变量

Looping creating new variable based on case when conditional

我是 R 的新手,正在尝试构建一个循环,在该循环中根据有条件的情况创建一个新变量。

for(i in 2:10){

  variable_1 <- paste0("a_", i)

  variable_2 <- paste0("b_", i)

  variable_3 <- paste0("c_", i)

  data1 <- data1 %>%
  mutate_(variable_3 = case_when(is.na(variable_1) & !is.na(variable_2) ~ 0,
                                 TRUE ~ 1))
}

当我 运行 这段代码时,我只能看到一个名为 variable_3 的新变量,而不是创建 c_2:c_10。这是为什么?有人会解释为什么它不起作用吗?

我们可能需要做赋值:=、求值(!!:=lhs上的表达式,以及将列对象转换为字符串符号 (sym) 和求值 (!!)

for(i in 2:10){

   variable_1 <- paste0("a_", i)
   variable_2 <- paste0("b_", i)
   variable_3 <- paste0("c_", i)
   data1 <- data1 %>%
    mutate(!! variable_3 := case_when(is.na(!! rlang::sym(variable_1)) & 
     !is.na(!! rlang::sym(variable_2) )~ 0,
                             TRUE ~ 1))
  }