2016-12-16 26 views
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 
+1

'×[(Y + 1):(Y + 3)]' –

回答

5

您想为括号

x[(y+1):(y+3)] 
# [1] 4 5 6 

为什么?

y+1:y+3 
#[1] 7 8 9 

:运营商和回收标量的优先级为您提供了错误的指标值。

比较以

(y+1):(y+3) 
# [1] 4 5 6 
+2

啊我明白了。所以它读取'y + 1:y + 3'为'y +(1:y)+ 3'并且循环给出了'[1 1 1] + [1 2 3] + [3 3 3]''。谢谢! 我认为+优先于:python – Lee88