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