从字符串中解析和评估 quosures

Parse and evaluate quosures from string

有没有一种方法可以从字符串中解析和计算一个 quosure。我想获得与以下示例相同的输出:

library(rlang)
a <- 10
quo(UQ(a) + 2 * b)
## <quosure: global>
## ~10 + 2 * b

但从

开始
t <- "UQ(a) + 2 * b"

我试过的是:

# Trial 1:
quo(expr(t))

# Trial 2: 
parse_quosure(t)

# Trial 3:
quo(parse_quosure(t))

一种方法是使用 parset 转换为表达式并使用 eval 对其求值。

eval(parse(text = paste0("quo(",t,")")))
#<quosure: global>
#~10 + 2 * b

看起来这可能是 expr_interp 的工作。根据文档 "manually processes unquoting operators in expressions...".

因此您可以先使用 parse_quosure 然后通过 expr_interp.

处理不引用运算符
expr_interp(parse_quosure(t))

<quosure: global>
~10 + 2 * b