从字符串中解析和评估 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))
一种方法是使用 parse
将 t
转换为表达式并使用 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
有没有一种方法可以从字符串中解析和计算一个 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))
一种方法是使用 parse
将 t
转换为表达式并使用 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