R:无法在向量的切片/索引中进行操作

Lee*_*e88 2 r

我刚刚发现R无法做一些我认为非常直观的事情.作为一个初学者试图深入了解R,有人可以解释为什么R无法做到这一点吗?

x = c(1,2,3,4,5,6)
y=3

x[4:6]
# 4 5 6   as expected

x[y+1:y+3]
# NA NA NA  unintuitive to me
Run Code Online (Sandbox Code Playgroud)

A. *_*ebb 5

你想要括号

x[(y+1):(y+3)]
# [1] 4 5 6
Run Code Online (Sandbox Code Playgroud)

为什么?

y+1:y+3
#[1] 7 8 9
Run Code Online (Sandbox Code Playgroud)

:操作符的优先级和标量的回收会为您提供错误的索引值.

相比于

(y+1):(y+3)
# [1] 4 5 6
Run Code Online (Sandbox Code Playgroud)

  • 啊,我明白了.因此它将"y + 1:y + 3"读作"y +(1:y)+ 3"并且回收给出"[1 1 1] + [1 2 3] + [3 3 3]".谢谢!我认为+优先于:在python中 (2认同)