在dplyr中如何从字符中获取case _

问题描述 投票:0回答:2

我正在尝试使用闪亮的应用程序中的case_when来构建应用程序,显示一些选择策略的预览,这些选择策略表示为一组规则。

在应用程序中,用户可以使用case_when语法输入表达式,例如:

cond = "Age > 40 ~ 1, TRUE ~ 0"

并且应该在case_when中将其替换。

我正在查看rlang,并试图弄清楚如何从字符向量中获取表达式,例如

tibble::tribble(~Age,23,26,32,50,51,52,25,49,34,54) %>% 
  mutate(result = case_when(!!!quos(syms(cond))))

但显然无法正确处理

r dplyr case-when rlang
2个回答
1
投票
library(dplyr) library(rlang) repdata %>% mutate(result = !!parse_expr(paste0("case_when(", cond, ")"))) %>% head() # Age result # <dbl> <dbl> #1 23 0 #2 26 0 #3 32 0 #4 50 1 #5 51 1 #6 52 1

我会注意,尽管如此,让用户在一个闪亮的应用程序内执行任意R代码可能不是最好的主意。使用cut之类的方法也许可以解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.