
数据结构
|
133
append(1:10, 99, after = 0)
#> [1] 99 1 2 3 4 5 6 7 8 9 10
问题 5.1 节中的注释也适用于此处。如果要将单个数据项插入向量,你可能在元素水平
工作;而在向量水平工作更容易编码,并且运行更快。
5.3 理解循环规则
5.3.1 问题
你想要理解奇妙的循环规则,它知道 R 软件如何处理不等长度的向量。
5.3.2 讨论
当作向量运算时,R 软件执行元素对元素的运算。当两个向量具有相同的长度时,这很
有效:R 软件成对搭配这些向量的元素,并将操作应用于这些元素对。
但是,当向量长度不等时会发生什么?
在这种情况下,R 软件应用循环规则。R 从两个向量的第一个元素开始,成对处理向量
元素。在某个元素位置,较短的向量已经处理完所有的元素,而较长的向量仍然具有未
处理的元素。这时候,R 软件返回到较短向量的开始位置,“循环”应用它的元素,同时
继续从较长向量中处理元素,直到这个操作完成为止。它将根据需要来循环较短向量的
元素,直到操作完成。
可以进行如下的循环规则的可视化。下面是两个向量的图表,1
∶
6 的整数和 1
∶
3 的整数:
1:6 1:3
----- -----
1 1
2 2
3 3
4
5
6
显然,向量 1
∶
6 比向量 1
∶
3 长。如果使用 (1
∶
6)+(1
∶
3)添加向量,看上去向量
1
∶
3 的元素太少。然而,R 软件循环应用向量 1
∶
3 的元素,将这两个向量配对并产生
一个有 6 个元素的向量:
1:6 1:3 (1:6) + (1:3) ...