> xy <- expr(x+y)
使用它来构建第二个表达式......它可以正常工作
> expr(a + !!xy)
a + (x + y)
只需更改参数的顺序即可停止工作
> expr(!!xy + a)
Error in (function (x) : object 'a' not found
我错过了什么吗?
谢谢
答案 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