将参数传递给rlang中的函数expr()和!!操作者

时间:2018-03-04 19:50:40

标签: r rlang

定义表达式

> xy <- expr(x+y)

使用它来构建第二个表达式......它可以正常工作

> expr(a + !!xy)

a + (x + y)

只需更改参数的顺序即可停止工作

> expr(!!xy + a)
Error in (function (x)  : object 'a' not found

我错过了什么吗?

谢谢

1 个答案:

答案 0 :(得分:1)

有办法让它发挥作用。更改char *inputCopy; char compressedString[100]; snprintf(inputCopy, size, "%s", input); // !? memory not allocated for the inputCopy 中使用!!xy的方式,它将起作用。即

expr

原因是所有算术运算符和比较运算符的优先级都高于expr((!!xy) + a) #(x + y) + a 。因此,算术和比较运算符比!紧密绑定。 e.g:

!

quasiquotation的r文档清楚地将其描述为:

> expr(!!2 + 3)
[1] 5
> expr((!!2) + 3)
(2) + 3