运算符优先级
当一个表达式中使用多个运算符时,我们需要知道这些运算符的优先级,才能确定执行操作的顺序。
优先级定义了执行顺序,即哪个运算符的优先级更高。
示例 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 | 一元负号,一元正号 | 从左到右 |
| %% | 模 | 从左到右 |
| *, / | 乘法,除法 | 从左到右 |
| +, - | 加法,减法 | 从左到右 |
| <, >, <=, >=, ==, != | 比较 | 从左到右 |
| ! | 逻辑非 | 从左到右 |
| &, && | 逻辑与 | 从左到右 |
| |, || | 逻辑或 | 从左到右 |
| ->, ->> | 右向赋值 | 从左到右 |
| <-, <<- | 左向赋值 | 从右到左 |
| = | 左向赋值 | 从右到左 |