我试图使用以两种看似相同的方式表示的数字向量从向量中提取值:
x <- c(1,2,3)
x[2:3]
# [1] 2 3
x[1+1:3]
# [1] 2 3 NA
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么表达式x[2:3]
产生的结果不同x[1+1:3]
- 第二个包含最后的NA
值.我错过了什么?
pla*_*pus 12
因为运营商:
优先于,+
所以1+1:3
真的1+(1:3)
(即2:4
)而不是2:3
.因此,要将执行顺序更改为已定义的运算符优先级,请使用括号()
您可以在帮助文件中查看运算符的优先顺序?Syntax
.以下是相关部分:
定义了以下一元和二元运算符.它们列在优先级组中,从最高到最低.
::
:::
访问变量在命名空间
$
@
组件/槽中提取
[
[[
索引
^
求幂(从右到左)
-
+
一元减号和加
:
序列运算符
%any%
特殊运算符(包括%%
和%/%
)
*
/
乘,除
+
-
(二进制)加,减