sdg*_*sdh 5 r operators infix-notation operator-precedence
假设我在R中有两个自定义中缀运算符:%foo%和%bar%.
我有两个运算符的表达式,例如:
x %foo% y %bar% z
Run Code Online (Sandbox Code Playgroud)
如何确定运算符的优先级%foo%和%bar%?
如何更改优先级,以便例如%bar%始终执行%foo%?在上面的例子中,这将是:
x %foo% (y %bar% z)
Run Code Online (Sandbox Code Playgroud)
我不认为这是明确记录的,但在R语言文档中隐含的是中缀运算符都具有相同的优先级,因此从左到右执行.这可以证明如下:
`%foo%` <- `+`
`%bar%` <- `*`
1 %bar% 2 %foo% 3
#5
1 %foo% 2 %bar% 3
#9
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一选择是重新定义一个现有的运营商来做你想做的事.但是,这本身会产生影响,因此您可能希望将其限制在函数内.
还值得注意的是,substitute在首次编写表达式时,using 不会更改已设置的运算符优先级:
eval(substitute(2 + 2 * 3, list(`+` = `*`, `*` = `+`)))
#10
2 * 2 + 3
#7
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |