在R中切片矢量会产生奇怪的输出

时间:2018-04-28 00:32:15

标签: r

(1:10)[2:5]
# [1] 2 3 4 5
(1:10)[2 + 1:5 + 1]
# [1] 4 5 6 7 8
(1:10)[(2 + 1):(5 + 1)]
# [1] 3 4 5 6
(1:10)[10 + 1:5 + 1]
# [1] NA NA NA NA NA

我正在学习列表访问如何在R中工作。上面的第二个案例看起来很奇怪。有人可以解释这种模式是如何运作的吗?

(1:10)[2 + 1:5 + 1]

1 个答案:

答案 0 :(得分:2)

矢量数学

R允许将向量视为单个数字。这是一个关于矢量数学的link很好的教程。我打赌你已经知道这一点,但在这种情况下配置只是有点不寻常。你的测试用例基本上将3(1 + 2)加到向量1:5然后索引。

测试:

> (1:10)[1+1:5+2] == (1:10)[1:5+3] [1] TRUE TRUE TRUE TRUE TRUE