为什么在没有parenthensis的情况下运行切片时会返回NA?

为什么在没有parenthensis的情况下运行切片时会返回NA?,r,R,考虑这个向量: x <- c("A", "B", "C", "D") 为什么当我们执行这行代码时,会返回NA x[1+1:4] "B" "C" "D" NA 但是,当我们在加号周围加上括号时 x[(1+1):4] [1] "B" "C" "D" 它返回正确的输出。您正在使用两组不同的索引进行切片 在第一种情况下,1+1:4生成一个从1到4的向量,1:4,然后添加1,因此2,3,4,5。在向量中,第5个位置不存在,因此得到一个NA 在第二个向量中,您正在切片的位置为(1+1):4,对

考虑这个向量:

x <- c("A", "B", "C", "D")
为什么当我们执行这行代码时,会返回NA

x[1+1:4]
"B" "C" "D" NA 
但是,当我们在加号周围加上括号时

x[(1+1):4]
[1] "B" "C" "D"

它返回正确的输出。

您正在使用两组不同的索引进行切片

在第一种情况下,
1+1:4
生成一个从1到4的向量,
1:4
,然后添加1,因此
2,3,4,5
。在向量中,第5个位置不存在,因此得到一个
NA


在第二个向量中,您正在切片的位置为
(1+1):4
,对应于
2,3,4
。这是存在于初始向量中的所有元素,因此您有相应的值

检查
1+1:4
(1+1):4
的输出这里,按照惯例
运算符表示比
+
更牢固的结合。因此,第一个向量也可以写成
1+1、1+2、1+3、1+4
,因为
1+…
适用于向量的所有元素。将其与数学中的加法/减法与乘法/除法进行比较。阅读
x[1+1:4]
"B" "C" "D" NA 
x[(1+1):4]
[1] "B" "C" "D"