2.3 生成正则序列

R 有一系列产生常用数列的工具。如 1:30 等价于向量 c(1, 2, ..., 29, 30)。 在R 表达式中,冒号优先级别最高,因此 2*1:15 等价于 c(2, 4, ..., 28, 30)。读者可以认真将 n <- 101:n-11:(n-1) 相互比较一下。

30:1 形式的句法(construction)可用来产生一个逆向的数列。

函数 seq() 是数列生成中最为常用的工具。它有五个参数,仅部分参数需要每次都设定。起始的两个参数,表示一个数列的首尾。如果只是给定这两个值,则和冒号运算符的效果完全一样了。如 seq(2,10) 等价于 2:10

seq() 和其他许多 R 函数的参数一样都可以用参数命名方式给定。在这情况下, 参数的顺序可以是任意的。这样,前两个参数就可以用 from=valueto=value 方式设定;因此 seq(1,30)seq(from=1, to=30)seq(to=30, from=1)1:30 完全一 样。seq() 随后的两个参数是 by=valuelength=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 中的每个元素都重复五次,然后将重复五次的元素逐一放入。


1. 译者注:我加过其他参数,也运行好好的。问题的关键在于,最终产生的数列长度 和 length(vector) 一致。

results matching ""

    No results matching ""