4

有没有办法从字符串中解析和评估 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))
4

2 回答 2

4

看起来这可能是一份工作expr_interp。根据文档,它“手动处理表达式中的取消引用运算符......”。

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

expr_interp(parse_quosure(t))

<quosure: global>
~10 + 2 * b
于 2017-11-28T23:06:22.880 回答
2

一种方法是使用parseto 转换t为表达式并eval对其进行评估。

eval(parse(text = paste0("quo(",t,")")))
#<quosure: global>
#~10 + 2 * b
于 2017-11-26T21:54:23.930 回答