我有两个变量,a和b。我尝试使用rlang包使用表达式计算a-b。 quo(a-b)按预期返回:
<quosure: global>
~a - b
但是,我有一个和b作为字符串。所以我尝试了:quo(!! sym(&#34; a-b&#34;)),结果是
<quosure: global>
~`a-b` #(note the '')
所以问题是为什么我得到了〜&#39; a-b&#39;而不是~a-b。我怎样才能简单地获得~a-b。请注意,quo(!! sym(&#34; a&#34;))按预期返回:
<quosure: global>
~a
所以似乎 - 符号存在问题(与*相同)。它与某些特殊字符/非标准评估问题有关吗?我该如何解决?
答案 0 :(得分:1)
使用parse_expr
...
library(rlang)
q0 <- quo(a - b)
q1 <- quo(!!parse_expr("a - b"))
identical(q0, q1)
# [1] TRUE
...或parse_quo
:
q2 <- parse_quo("a - b", global_env())
identical(q0, q2)
# [1] TRUE