我试图根据另一个嵌套框架中的case_when函数列表,将case_when应用于嵌套框架_1中的选定列.
例如,使用mtars数据帧:
mpg | cyl |
---|---|
21 | 6 |
21 | 6 |
22.8 | 4 |
我想使用下面的框架(框架_2)来改变列.
dataframe_2 = data.frame(variable = c(c("mpg", "cyl")), function_to_use = c('case_when(mpg == 21 ~ "A", mpg == 22.8 ~ "B"', 'case_when(cyl == 6 ~ "X", cyl == 4 ~ "Y"'))
个
variable | function_to_use |
---|---|
mpg | case_when(mpg == 21 ~ "A", mpg == 22.8 ~ "B" |
cyl | case_when(cyl == 6 ~ "X", cyl == 4 ~ "Y" |
预期结果将是:
mpg | cyl |
---|---|
A | X |
A | X |
B | Y |
我希望使用DataFrame_2动态完成此操作.
我已经try 了下面的代码.
mtcars %>% mutate(across(dataframe_2$variable ~ !!!parse_exprs(dataframe_2$function_to_use)))
我注意到下面的代码可以工作,但不会更改原始的列.
a <- ‘case_when(mpg == 21 ~ "A", mpg == 22.8 ~ "B"; case_when(cyl == 6 ~ "X", cyl == 4 ~ "Y"‘
mtcars %>% mutate(across(c("mpg", "cyl") ~ !!!parse_exprs(a)))
编辑:问题的延伸.
我的括号实际上是列表中的括号:
dataframe_1 <- list(dataframe_1a = mtcars[1:3, c("mpg", "cyl")], dataframe_1b = mtcars[4:6, c("mpg", "cyl")])
dataframe_2 <- list(dataframe_2a = data.frame(variable = c(c("mpg", "cyl")), function_to_use = c('case_when(mpg == 21 ~ "A", mpg == 22.8 ~ "B"',
'case_when(cyl == 6 ~ "X", cyl == 4 ~ "Y"')),
dataframe_2b = data.frame(variable = c(c("mpg", "cyl")), function_to_use = c('case_when(mpg > 21 ~ "A", TRUE ~ "B"',
'case_when(cyl >7 ~ "X", TRUE ~ 4 ~ "Y"'))
我将如何将每个函数应用于它们各自的数据帧对?我试过使用map2,但没有成功.谢谢你的帮助!