[英]Order of operator precedence when using ":" (the colon)
我正在尝试使用以两种看似等效的方式表示的数字向量从向量中提取值:
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
值。 我错过了什么?
因为运算符:
优先于+
所以1+1:3
实际上是1+(1:3)
(即2:4
)而不是2:3
。 因此,要将执行顺序更改为定义的运算符优先级,请使用括号()
您可以在帮助文件?Syntax
中查看运算符的优先顺序。 以下是相关部分:
定义了以下一元和二元运算符。 它们按优先级组从高到低列出。
::
:::
访问命名空间中的变量
$
@
组件/槽提取
[
[[
索引
^
取幂(从右到左)
-
+
一元减号和加号
:
序列运算符
%any%
特殊运算符(包括%%
和%/%
)
*
/
乘除
+
-
(二进制)加、减
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.