我试图使用以两种看似相同的方式表示的数字向量从向量中提取值:
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%特殊运算符(包括%%和%/%)
*/乘,除
+-(二进制)加,减