运算符优先级
当一个表达式中使用多个运算符时,我们需要知道这些运算符的优先级,才能确定执行操作的顺序。
优先级定义了执行顺序,即哪个运算符的优先级更高。
示例 1: R 中的运算符优先级
> 2 + 6 * 5
[1] 32
在这里,*
运算符的优先级高于 +
,因此 2 + 6 * 5
被解释为 2 + (6 * 5)
。可以使用括号 () 来改变这种顺序。
> (2 + 6) * 5
[1] 40
运算符结合性
在一个表达式中可能包含多个具有相同优先级的运算符。在这种情况下,执行顺序由结合性决定。
运算符的结合性在上面的表格中给出。
我们可以看到,大多数运算符的结合性是从左到右。
示例 2: R 中的运算符结合性
> 3 / 4 / 5
[1] 0.15
在上面的示例中,由于 /
运算符的从左到右结合性,3 / 4 / 5
被评估为 (3 / 4) / 5
。但是,使用括号 () 也可以改变这种顺序。
> 3 / (4 / 5)
[1] 3.75
R 中不同运算符的优先级和结合性(从高到低)
运算符 | 描述 | 结合性 |
---|---|---|
^ | 幂 | 从右到左 |
-x, +x | 一元负号,一元正号 | 从左到右 |
%% | 模 | 从左到右 |
*, / | 乘法,除法 | 从左到右 |
+, - | 加法,减法 | 从左到右 |
<, >, <=, >=, ==, != | 比较 | 从左到右 |
! | 逻辑非 | 从左到右 |
&, && | 逻辑与 | 从左到右 |
|, || | 逻辑或 | 从左到右 |
->, ->> | 右向赋值 | 从左到右 |
<-, <<- | 左向赋值 | 从右到左 |
= | 左向赋值 | 从右到左 |