【发布时间】:2018-05-03 15:34:21
【问题描述】:
使用rlang包,我想知道sym()和parse_expr()有什么区别。例如,考虑以下表达式:
ex1 = sym('a')
ex2 = parse_expr('a')
他们都回来了
a
identical(ex1, ex2)
[1] TRUE
假设现在我需要一个 quosure:
ex3 = quo(!!sym('a'))
ex4 = quo(!!parse_expr('a'))
在这两种情况下,结果都是:
<quosure>
expr: ^a
env: global
identical(ex3, ex4)
[1] TRUE
但是,由于某些原因,以下两个并不相同。
ex5 = quo(!!sym('a - b'))
ex6 = quo(!!parse_expr('a - b'))
显然它们是相同的,因为两者都返回:
<quosure>
expr: ^a - b
env: global
然而,
identical(ex5, ex6)
[1] FALSE
那么,我的问题是,sym() 和 parse_expr() 之间有什么区别?
一个做什么而另一个不能做什么?为什么ex5 明显类似于ex6,但identical(ex5, ex6) 返回FALSE?
【问题讨论】:
标签: r string evaluation rlang