R 有一系列产生常用数列的工具。
如 1:30 等价于向量 c(1, 2,
..., 29, 30)。
在表达式中,冒号优先级别最高,因此
2*1:15 等价于 c(2, 4, ..., 28, 30)。
读者可以认真将 n <- 10,1:n-1,
1:(n-1)相互比较一下。
30:1 形式的句法(construction)可用来产生一个
逆向的数列。
函数 seq() 是产生数列中最为常用的工具。
它有五个参数,仅仅部分参数需要每次都设定。
起始的两个参数,表示
一个数列的首尾。如果只是
给定这两个值,则和冒号运算符的结果完全一样了。
如 seq(2,10) 等价于 2:10。
seq() 和其他许多 R 函数的参数一样
都可以用命名方式给定。在这情况下,参数的顺序可以是任意的。
这样,前两个参数就可以用
from=value 和 to=value 方式设定;因此
seq(1,30),seq(from=1, to=30) 和 seq(to=30,
from=1) 同 1:30 完全一样。seq() 接下来的两个参数
是 by=value 和
length=value;它们分别表示这个数列的步长和长度。
如果二者没有设定,那么默认值就是
by=1(步长为1)。
例如
> seq(-5, 5, by=.2) -> s3
将向量 c(-5.0, -4.8, -4.6, ...,
4.6, 4.8, 5.0) 赋给 s3。类似的是,
> s4 <- seq(length=51, from=-5, by=.2)
将在 s4 中产生一样的向量。
第五个参数是 along=vector。使用这个参数时,
必须是唯一的1,它可以创建数列 1, 2,
..., length(vector),或者是空数列(在向量vector为空时)。
还有一个相关的函数是 rep()。
它可以用各种复杂的方式重复一个对象。
最简单的方式就是
> s5 <- rep(x, times=5)
这种方式先把 x 的完整拷贝五次,保持 x 的数列顺序,逐一放在 s5 中。
另一种有用的方式是
> s6 <- rep(x, each=5)
这种放松把 x 中的每个元素都重复五次,
然后将重复五次的元素逐一放入。