根据条件循环创建新变量
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))
}
我是 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))
}