我刚刚发现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)
你想要括号
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)