在rlang包中使用带有特殊字符的字符串和quo()

在rlang包中使用带有特殊字符的字符串和quo(),r,string,evaluation,rlang,R,String,Evaluation,Rlang,我有两个变量,a和b。我尝试使用rlang包中的表达式来计算a-b。quoa-b返回,如预期: <quosure: global> ~a - b <quosure: global> ~a 但是,我有a和b作为字符串。所以我试着:quo!!syma-b,这会导致 <quosure: global> ~`a-b` #(note the '') 所以问题是为什么我得到~'a-b',而不是~a-b。我怎样才能简单地获得~a-b。请注意!!正如预期的那样,syma

我有两个变量,a和b。我尝试使用rlang包中的表达式来计算a-b。quoa-b返回,如预期:

<quosure: global>
~a - b
<quosure: global>
~a
但是,我有a和b作为字符串。所以我试着:quo!!syma-b,这会导致

<quosure: global>
~`a-b` #(note the '')
所以问题是为什么我得到~'a-b',而不是~a-b。我怎样才能简单地获得~a-b。请注意!!正如预期的那样,syma返回:

<quosure: global>
~a - b
<quosure: global>
~a
因此,似乎有一个问题与符号相同,将发生与*。是否与某些特殊字符/非标准评估问题有关?如何解决这个问题?

使用解析表达式


请参见此处的讨论:

谢谢。你能解释一下sym和parse_exp之间的区别吗?从上面提到的讨论中不清楚。你应该把它作为一个新问题来问,这样其他有相同问题的人在搜索时可以找到它。但简而言之,syma-b创建了一个符号“a-b”,即“a-b”`