在我的应用中,用户可以提供“子集化”表达式(由mix:变量,存储在变量中的名称 - 视频<select alert-select [(ngModel)]="area_id">
<option value="1">Area 1</option>
<option value="2">Area 2</option>
</select>
和args_input
变量)作为subset_args_input
/ {的参数{1}}函数:
subset
我的期望是获得与执行相同的结果:
[
执行此操作:
df_data <- data.frame("a" = c(1,1,2),
"b" = c(3,4,4),
"c" = c(5,6,7))
global_data <- list("column_to_extract" = c("b"))
args_input <- "list(df_data, df_data$a %in% c(1), global_data[['column_to_extract']])"
另外,我尝试过与do.call("[", list(df_data, df_data$a %in% c(1), global_data[['column_to_extract']]))
类似的东西:
do.call("[", eval(parse(text=args_input)))
subset
+ subset_args_input <- "list(quote(df_data), quote(a %in% c(1)), quote(global_data[['column_to_extract']]))"
do.call("subset", eval(parse(text=subset_args_input)))
,如果允许用户传递任何字符串,则不安全。问题 - 如果没有eval
+ parse
组合,可以获得相同的结果吗?