我正在寻找一种动态方法来指定一些"条件参数",然后将其输入到case_when
操作(或者其他更适合该问题的操作).
因此,我的目标是在调用时将条件的规范与case_分开,例如,用户可以在txt文件或R中的列表中键入条件,然后我会在调用时将该信息提供给case_(或任何其他函数,如果更合适的话).
假设下面的数据,我想创建一个额外的变量,重新编码x
,我可以这样做:
df <- data.frame(x = 1:10)
df |>
mutate(x2 = case_when(x < 4 ~ 1,
x >= 4 & x <=7 ~ 2,
TRUE ~ 3))
现在,我想要实现的是,让这段代码更加灵活,我可以在外部指定case_when条件,然后重新编码.
例如,它可能看起来像:
all_conditions <- list(1 = "x < 2",
2 = "x >= 2 & x < 5",
3 = "x >= 5 & x < 9",
4 = "TRUE")
然后我可以做一些:
df |>
mutate(x2 = do(case_when, all_conditions))
编辑:虽然示例显示了@Mael解决方案适用的数值类型变量,但该解决方案也适用于条件可能类似于"x=="abc"| x=="def"的字符变量.