:
操作
创建一个整数序列
> 1:20 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 > 15:1 [1] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
:
类似python中的切片(slice)操作。创建一个浮点型序列
> pi:10 [1] 3.141593 4.141593 5.141593 6.141593 7.141593 8.141593 9.141593 > 6:pi [1] 6 5 4
是小数还是整数,取决与:
前面的数字的类型。
seq
创建序列
> seq(1, 20)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> seq(0, 3, by=0.5)
[1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0
seq
有点类似numpy中的arange
。by
参数是间隔。
> seq(2, 5, length=10)
[1] 2.000000 2.333333 2.666667 3.000000 3.333333 3.666667 4.000000 4.333333 4.666667
[10] 5.000000
> length(seq(2, 5, length=10))
[1] 10
创建长度为10的序列,起始位置为2和5.
> my_seq <- seq(5, 10, length=30)
> 1:length(my_seq)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
[28] 28 29 30
> seq(along.with = my_seq)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
[28] 28 29 30
> seq_along(my_seq)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
[28] 28 29 30
同样的目的可以使用好几种办法来实现,R推崇使用最短的那个方案,尽量使用R的内置函数,因为这个已经被优化过,速度快。
使用rep
创建重复元素序列
> rep(0, times = 10)
[1] 0 0 0 0 0 0 0 0 0 0
> rep(c(0, 1, 2), times = 3)
[1] 0 1 2 0 1 2 0 1 2
> rep(c(0, 1, 2), each = 3)
[1] 0 0 0 1 1 1 2 2 2