我正在尝试使用闪亮的应用程序中的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))))
但显然无法正确处理
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
之类的方法也许可以解决此问题。