在 rlang 包中使用带有 quo() 的特殊字符的字符串
Using string with special characters with quo(), in rlang package
我有两个变量,a 和 b。我尝试使用带有 rlang 包的表达式来计算 a-b。 quo(a-b) returns,如预期:
<quosure: global>
~a - b
但是,我有 a 和 b 作为字符串。所以我尝试了:quo(!!sym("a-b")),结果是
<quosure: global>
~`a-b` #(note the '')
所以问题是为什么我获得了 ~'a-b',而不是 ~a-b。我怎样才能简单地获得〜a-b。注意 quo(!!sym("a")) returns,正如预期的那样:
<quosure: global>
~a
看来 - 符号有问题(* 也会出现同样的问题)。是不是和一些特殊字符/不规范的评价问题有关?我该如何解决?
使用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
我有两个变量,a 和 b。我尝试使用带有 rlang 包的表达式来计算 a-b。 quo(a-b) returns,如预期:
<quosure: global>
~a - b
但是,我有 a 和 b 作为字符串。所以我尝试了:quo(!!sym("a-b")),结果是
<quosure: global>
~`a-b` #(note the '')
所以问题是为什么我获得了 ~'a-b',而不是 ~a-b。我怎样才能简单地获得〜a-b。注意 quo(!!sym("a")) returns,正如预期的那样:
<quosure: global>
~a
看来 - 符号有问题(* 也会出现同样的问题)。是不是和一些特殊字符/不规范的评价问题有关?我该如何解决?
使用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