CHAPTER1.绪论与基础 13R与统计 在我们对R语言环境的介绍中并没有提到统计,不过很多人都把R作为一个 统计系统来使用。我们倾向于把它当作环境,使得经典和现代统计技术在其 中得到应用。一部分已经被内建在基本的R语言环境中,但是更多的是以包 的形式提供的。由8个包是随着R一同提供的(称作标准包),其它的可以通 过CRAN的成员网站获得(通过Hrrp:// CRAN,R- PROJECT ORG)。 通过R可以使用绝大多数的经典或者最新的统计方法,不过用户需要花一些 功夫来找出这种方法。 S(和R)与其他主流的统计系统在本质上有一个很重要的不同。在S中 统计分析通常由一系列的步骤完成,同时将交互的结果存储在对象中。所以, 尽管SAS和SPSs在一个回归或者判别分析中会给出丰富的输出结果,R只是 给出一个最小的输出,而将结果保存在一个适当的对象中由R函数进行后续查 14R与视窗系统 使用R最便捷的方式是在一个运行视窗系统的图形工作站上。这份指南就是为 拥有这项便利的用户准备的。尽管我们绝大部分的内容都是来讲R环境的一般 应用,我们还是会时不时的提到R在 X WINDoW系统下的应用。 与操作系统的直接互动对多数用户来说都是必要的。在这份指南中我们主 要讨论在UNIX系统下的互动,所以 WINDOWS下的R用户需要做出一些小的调 整。 对工作站的定制是一项直接而有效但又单调乏味的过程,在这里我们并不会 作更深入的讨论。如果您在这方面遇到了困难可以向你身边的专家寻求帮助。 15R的交互使用 R程序在等待输入命令时会给出提示符,默认的提示符是>,与UNIX的 SHELL提 示符是相同的。不过如果你愿意的话,我们可以轻松的更改R的提示符。在这 里我们先假定UNIX的sHEL提示符是$。在UNIX下使用R可以按照下面的推 荐步骤来做:1.创建一个独立的子目录来存储解决这个问题所用的数据文件,将 目录命名为woRK这个目录将作为你当前任务的工作目录 s mkdir work 2启动R的程序 S R 3使用R的各种命令 4.退出R 此时您会被询问是否保存您在R任务中的数据。你可以回答YEs,NO或 CANCEL(使 用缩略字符也可以)分别对应退出前保存数据,不保存数据退出或回到R任务 中。被存储的数据在之后的R任务中可以继续使用。 之后的R任务就更简单了。1.令WORK成为工作目录,并启动R程序 s cd work s R
CHAPTER 1. 绪论与基础 2 1.3 R与统计 在我们对R语言环境的介绍中并没有提到统计,不过很多人都把R作为一个 统计系统来使用。我们倾向于把它当作环境,使得经典和现代统计技术在其 中得到应用。一部分已经被内建在基本的R语言环境中,但是更多的是以包 的形式提供的。由8个包是随着R一同提供的(称作标准包),其它的可以通 过CRAN的成员网站获得(通过http://cran.r-project.org)。 通过R可以使用绝大多数的经典或者最新的统计方法,不过用户需要花一些 功夫来找出这种方法。 S(和R)与其他主流的统计系统在本质上有一个很重要的不同。在S中, 统计分析通常由一系列的步骤完成,同时将交互的结果存储在对象中。所以, 尽管SAS和SPSS在一个回归或者判别分析中会给出丰富的输出结果,R只是 给出一个最小的输出,而将结果保存在一个适当的对象中由R函数进行后续查 询。 1.4 R与视窗系统 使用R最便捷的方式是在一个运行视窗系统的图形工作站上。这份指南就是为 拥有这项便利的用户准备的。尽管我们绝大部分的内容都是来讲R环境的一般 应用,我们还是会时不时的提到R在X window系统下的应用。 与操作系统的直接互动对多数用户来说都是必要的。在这份指南中我们主 要讨论在UNIX系统下的互动,所以Windows下的R用户需要做出一些小的调 整。 对工作站的定制是一项直接而有效但又单调乏味的过程,在这里我们并不会 作更深入的讨论。如果您在这方面遇到了困难可以向你身边的专家寻求帮助。 1.5 R的交互使用 R程序在等待输入命令时会给出提示符,默认的提示符是>, 与UNIX的shell提 示符是相同的。不过如果你愿意的话,我们可以轻松的更改R的提示符。在这 里我们先假定UNIX的shell提示符是$。在UNIX下使用R可以按照下面的推 荐步骤来做:1.创建一个独立的子目录来存储解决这个问题所用的数据文件,将 目录命名为work.这个目录将作为你当前任务的工作目录. $ mkdir work $ cd work 2.启动R的程序 $ R 3.使用R的各种命令 4.退出R > q() 此时您会被询问是否保存您在R任务中的数据。你可以回答yes,no或cancel(使 用缩略字符也可以)分别对应退出前保存数据,不保存数据退出或回到R任务 中。被存储的数据在之后的R任务中可以继续使用。 之后的R任务就更简单了。1.令work成为工作目录,并启动R程序。 $ cd work $ R
CHAPTER1.绪论与基础 2使用R,在任务结束时用q()来中止。 在 WINDOWS下使用R的步骤与上面基本相同。创建一个文件夹作为工作目 录,并将其设定R快捷方式的在”起始位置”中。然后双击图标启动R。 16入门训练 我们非常推荐读者们在继续进行之前通过一个示例来获取在计算机上使用R的 感觉。这个示例由示例训练给出 17获取函数和功能的帮助信息 和UNIX中的MAN命令一样,R拥有一个内建的帮助功能。对于任意一个指定 的函数,例如 SOLVE,命令是 >help(solve) 或者 1 对于由特殊字符指定的功能,这些参数必须用单引号或双引号括起来,使之 成为一个“字符串”:同时对于某些含有IF,FOR或者 FUNCTION的合成词也要这 样处理。 >help("[[") 不论是单引号还是双引号都可以包含在另一个中,例如字符串:” IT'S IM PORTANT”。我们的惯例是使用双引号。 般情况下帮助文档的HTML格式都是被安装了的,可以通过运行下面的 命令 >help start 启动一个WEB浏览器(UNIX下是 NETSCAPE浏览器)来浏览包含超级链接的 帮助页面。在UNIX下,后续的帮助请求回被发送到HTML为基础的帮助系统 中。页面中 SEARCH ENGINE AND KEYWORDS'连接可以通过所包含的列表对 各种函数进行非常有效的查询。这是你熟悉并且理解R提供的各种功能的好方 法。命令HELP. SEARCH允许我们用多种方式来搜索帮助信息:细节和例子可以 用? HELP SEARCH来查询。与某个主题相关的例子通常可以用下面的命令得到 e(topic) WINDOWS版本的R还有另外可选的帮助系统,详细资料请用 Help 来查询。 18R的命令、对大小写的敏感,等等 从技术角度来讲,R是一种表达式语言,它的语法是非常简单的。和大多 数UNIX为基础的软件包一样,R对大小写是敏感的,也就是说A和A是不同的 代号并且将代表不同的变量。R语言名称中可用的字符集由当前的操作系统决 定(即由 LOCALE决定)。正常情况下所有的字母和数字都是可用的(在某些国家 包括重音字符),还包括句点.**NOTE1**,但是要注意名称不能以数字开 始。基本的命令由表达式或者赋值语句组成。如果一个表达式被作为一条命令 给出,它将被求值、打印而表达式的值并不被保存。一个赋值语句同样对表达 式求值之后把表达式的值传给一个变量,不过并不会自动的被打印出来。命令 由分号(:)来分隔,或者另起新行。基本命令可以由花括号({和})合并为一组复 合表达式。注释几乎可以被放在任何地方,只要是以井号(#)开始,到行末结
CHAPTER 1. 绪论与基础 3 2.使用R,在任务结束时用 q() 来中止。 在Windows下使用R的步骤与上面基本相同。创建一个文件夹作为工作目 录,并将其设定R快捷方式的在”起始位置”中。然后双击图标启动R。 1.6 入门训练 我们非常推荐读者们在继续进行之前通过一个示例来获取在计算机上使用R的 感觉。这个示例由示例训练给出。 1.7 获取函数和功能的帮助信息 和UNIX中的man命令一样,R拥有一个内建的帮助功能。对于任意一个指定 的函数,例如solve,命令是 >help(solve) 或者 >?solve 对于由特殊字符指定的功能,这些参数必须用单引号或双引号括起来,使之 成为一个“字符串”:同时对于某些含有if,for或者function的合成词也要这 样处理。 > help("[[") 不论是单引号还是双引号都可以包含在另一个中,例如字符串:”It’s important”。我们的惯例是使用双引号。 一般情况下帮助文档的HTML格式都是被安装了的,可以通过运行下面的 命令 > help.start() 启动一个Web浏览器(UNIX下是netscape 浏览器)来浏览包含超级链接的 帮助页面。在UNIX下,后续的帮助请求回被发送到HTML为基础的帮助系统 中。页面中’Search Engine and Keywords’连接可以通过所包含的列表对 各种函数进行非常有效的查询。这是你熟悉并且理解R提供的各种功能的好方 法。命令help.search 允许我们用多种方式来搜索帮助信息:细节和例子可以 用?help.search 来查询。与某个主题相关的例子通常可以用下面的命令得到 > example(topic) Windows版本的R还有另外可选的帮助系统,详细资料请用 > ?help 来查询。 1.8 R的命令、对大小写的敏感,等等 从技术角度来讲,R是一种表达式语言,它的语法是非常简单的。和大多 数UNIX为基础的软件包一样,R对大小写是敏感的,也就是说A和a是不同的 代号并且将代表不同的变量。R语言名称中可用的字符集由当前的操作系统决 定(即由locale决定)。正常情况下所有的字母和数字都是可用的(在某些国家 包括重音字符),还包括句点. ***note 1***,但是要注意名称不能以数字开 始。基本的命令由表达式或者赋值语句组成。如果一个表达式被作为一条命令 给出,它将被求值、打印而表达式的值并不被保存。一个赋值语句同样对表达 式求值之后把表达式的值传给一个变量,不过并不会自动的被打印出来。命令 由分号(;)来分隔,或者另起新行。基本命令可以由花括号( {和})合并为一组复 合表达式。注释几乎可以被放在任何地方,只要是以井号( # )开始,到行末结
CHAPTER1.绪论与基础 束的都是注释。如果一个命令在行莫仍没有结束,R将会给出一个不同的提示 符,默认的是 在第二行和后续行R将继续读入,直到命令从语法角度讲已经输入完成了。 这个提示符也可以由用户更改。一般情况忽略继续输入提示符就行。 19对已输入命令的记忆和更改 在许多版本的UNIX和 WINDOWS下,R提供了对已输入命令记忆和再次执行的 种机制。使用垂直方向箭头的按键可以在命令记录中向前或向后滚动。当 个命令用这种方法定位之后,你就可以使用左右键改变光标的位置,对命 令行进行编辑(用<DEL>删除或者按其他按键进行添加)。相信的资料在稍后 提供:参见命令行编辑器。记忆和编辑功能在UNX下是高度可定制的。你 可以在 READLINE库的手册中找到具体的方法。作为选择, EMACS的文本编辑 器提供了一种更为一般的支持机制(通过ESS, EMACS SPEAKS STATISTICS)来 为R下面的交互工作服务。参见R和 EMACS 110命令文件的执行和输出的转向到文件 如果命令存储于一个外部文件中,比如工作目录woRK中的 COMMANDS.R,他 们可以随时在R的任务中被执行 >source("commands. R") 在 WINDOWS中 SOURCE也可以由FE菜单执行。函数sINK sink("record. lis") 将把所有后续的输出由终端转向一个外部文件, RECORD.LIs。命令 将把信息重新恢复到终端上。 111数据的保持与对象的清除 R所创建、操作的实体是对象。对象可以是变量、数组、字符串、函数以及由 这些元素组成的其它结构。在一个R的任务过程中,对象根据名称被创建和存 储(我们将在下个训练中讨论这个过程)。下面的命令 objects (作为选择,Ls(O可以)被用来显示目前存储在R中的对象的名字。而当前存 储的所有对象的组合被称为 WORKSPACE 清除对象可以使用RM命令: rm(x, y, z, ink, junk, temp, foo, bar) 所有在一个R任务中被创建的对象都可以在文件中被永久保存,并在其 它的R任务中被使用。在每个R任务结束时用户都有机会保存当前有效的 所有对象。如果用户这样做的话,对象将被写入当前目录一个名为 RDATA **NOTE3**。当R被再次启动时R会从这个文件中再载入 WORKSPACE。同时 相关的命令记录也被载入。 推荐大家在用R进行不同的分析时分别使用不同的工作目录。在分析过程 中创建名为x或Y的对象是很普通的。在一个单独的分析中它们的含义也会很清 晰,但是如果几个不同的分析在同一个工作目录中被处理的话你将会发现分辨 它们的含义是件很痛苦的事情
CHAPTER 1. 绪论与基础 4 束的都是注释。如果一个命令在行莫仍没有结束,R将会给出一个不同的提示 符,默认的是 + 在第二行和后续行R将继续读入,直到命令从语法角度讲已经输入完成了。 这个提示符也可以由用户更改。一般情况忽略继续输入提示符就行。 1.9 对已输入命令的记忆和更改 在许多版本的UNIX和Windows下,R提供了对已输入命令记忆和再次执行的 一种机制。使用垂直方向箭头的按键可以在命令记录中向前或向后滚动。当 一个命令用这种方法定位之后,你就可以使用左右键改变光标的位置,对命 令行进行编辑(用<DEL>删除或者按其他按键进行添加)。相信的资料在稍后 提供:参见命令行编辑器。记忆和编辑功能在UNIX下是高度可定制的。你 可以在readline 库的手册中找到具体的方法。作为选择,Emacs的文本编辑 器提供了一种更为一般的支持机制(通过ESS,Emacs Speaks Statistics)来 为R下面的交互工作服务。参见R和Emacs。 1.10 命令文件的执行和输出的转向到文件 如果命令存储于一个外部文件中,比如工作目录work中的commands.R,他 们可以随时在R的任务中被执行 > source("commands.R") 在Windows中Source也可以由File菜单执行。函数sink, > sink("record.lis") 将把所有后续的输出由终端转向一个外部文件,record.lis。命令 > sink() 将把信息重新恢复到终端上。 1.11 数据的保持与对象的清除 R所创建、操作的实体是对象。对象可以是变量、数组、字符串、函数以及由 这些元素组成的其它结构。在一个R的任务过程中,对象根据名称被创建和存 储(我们将在下个训练中讨论这个过程)。下面的命令 > objects() (作为选择,ls()可以)被用来显示目前存储在R中的对象的名字。而当前存 储的所有对象的组合被称为workspace。 清除对象可以使用rm命令: > rm(x, y, z, ink, junk, temp, foo, bar) 所有在一个R任务中被创建的对象都可以在文件中被永久保存,并在其 它的R任务中被使用。在每个R任务结束时用户都有机会保存当前有效的 所有对象。如果用户这样做的话,对象将被写入当前目录一个名为.RData ***Note3***。当R被再次启动时R会从这个文件中再载入workspace。同时 相关的命令记录也被载入。 推荐大家在用R进行不同的分析时分别使用不同的工作目录。在分析过程 中创建名为x或y的对象是很普通的。在一个单独的分析中它们的含义也会很清 晰,但是如果几个不同的分析在同一个工作目录中被处理的话你将会发现分辨 它们的含义是件很痛苦的事情
Chapter 2 简单操作;数值与向量 2.1向量与赋值 R对命名了的数据结构进行操作。最简单的数据结构是数字向量,数字向量是 由一组有序数字组成的单个实体。下面的R命令将创建一个名为x,包含5个数 字(10.4,5.6,3.1,6.4和21.7)的向量 >x<-c(10.4,5.6,3.1,6.4,21.7) 上面的就是一个使用函数c()的赋值过程,其中函数c(的作用是将参数中的 数值向量以及向量的值首尾相接组成一个新的向量。一个数字形成的向量可以 被看作长度为1。注意赋值操作符(;-)不是通常的=操作符,=是为另外 种目的保留的。赋值操作符由两个字符组成(小于)和-(减)组成,而且他们 应当严格的遵守:和-是紧靠在一起的,符号指向的是接受表达式值的那个对 法是:ote5*赋值的操作同样可以使用函数 assign(。与上面等价的赋值方 象 ("x",c(10.4,5.6,3.1,6.4,21.7) 通常使用的操作符;可以被当作函数 assign()的简写。赋值同样可以在另一 个方向进行,改变赋值操作符的方向就可以了。所以同样的复制操作还可以被 写成 >c(10.4,5.6,3.1,6.4,21.7)->x 如果一个表达式被当作一个完整的命令,它的值将被打印到终端但不被储 存。所以如果我们使用这个命令 1 五个值的倒数将被打印到终端上(还有x的值)。下面的这个赋值操作 将创建一个向量y,其中的11项包含两个x和中间位置的一个0。 22向量运算 向量可以被用于算术表达式中,操作是按照向量中的元素一个一个进行的。同 个表达式中的向量并不需要具有相同的长度。如果它们的长度不同,表达式的 结果是一个与表达式中最长向量有相同长度的向量。表达式中较短的向量会根 据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量相匹 配。而常数很明显的将被不断重复。所以在上面的赋值前提下命令
Chapter 2 简单操作;数值与向量 2.1 向量与赋值 R对命名了的数据结构进行操作。最简单的数据结构是数字向量,数字向量是 由一组有序数字组成的单个实体。下面的R命令将创建一个名为x,包含5个数 字(10.4, 5.6, 3.1, 6.4 和21.7)的向量: > x <- c(10.4, 5.6, 3.1, 6.4, 21.7) 上面的就是一个使用函数c()的赋值过程,其中函数c()的作用是将参数中的 数值向量以及向量的值首尾相接组成一个新的向量。一个数字形成的向量可以 被看作长度为1。注意赋值操作符( ¡- ) 不是通常的= 操作符,= 是为另外一 种目的保留的。赋值操作符由两个字符组成¡ (小于) 和- (减)组成,而且他们 应当严格的遵守:¡和-是紧靠在一起的,符号指向的是接受表达式值的那个对 象。***note 5*** 赋值的操作同样可以使用函数assign()。与上面等价的赋值方 法是: > assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7)) 通常使用的操作符¡- 可以被当作函数assign()的简写。赋值同样可以在另一 个方向进行,改变赋值操作符的方向就可以了。所以同样的复制操作还可以被 写成 > c(10.4, 5.6, 3.1, 6.4, 21.7) -> x 如果一个表达式被当作一个完整的命令,它的值将被打印到终端但不被储 存。所以如果我们使用这个命令 > 1/x 五个值的倒数将被打印到终端上(还有x的值)。下面的这个赋值操作 > y <- c(x, 0, x) 将创建一个向量y,其中的11项包含两个x和中间位置的一个0。 2.2 向量运算 向量可以被用于算术表达式中,操作是按照向量中的元素一个一个进行的。同 一个表达式中的向量并不需要具有相同的长度。如果它们的长度不同,表达式的 结果是一个与表达式中最长向量有相同长度的向量。表达式中较短的向量会根 据它的长度被重复使用若干次(不一定是整数次),直到与长度最长的向量相匹 配。而常数很明显的将被不断重复。所以在上面的赋值前提下命令 > v <- 2*x + y + 1 5
CHAPTER2.简单操作:数值与向量 产生一个长度为11的新向量v,逐个元素的进行运算,其中2*x被重复22次,y 被重复1次,常数1被重复11次。逐个元素进行运算的操作符包括+,-,*,/ 此外所有普通的运算函数都能够被使用。1og,exp,sin,cos,tan,sqrt等 等,而且意义并没有什么变化。max和min的作用是选出所给向量中最大的或最 小的元素。 range函数的值是一个长度为2的向量,即c(min(x),max(x))。 length(x)返回了向量x中元素的个数,也就是x的长度。sumn(x)给出了x中所 有元素的总和,proa(x)给出x中所有元素的乘积。两个统计函数是mean(x) 和var(x),分别计算样本均值和样本方差,这两个函数分别相当于sum(x)/ length(x) sum((x-mean(x)\-2)/(1 ength(x)-1)。如果var()的参数是一个n*p的矩阵 那么函数的值是一个p*p的样本协方差矩阵,认为每行是一个p变量的样本向 量。sort(x)返回一个与x具有相同长度的向量,其中的元素按招升序排列。还 有其他更灵活的排序功能(参见 order(和sort.1ist()。需要注意不论参数中 有几个向量,max和min给出的是所有向量的一个最大值或最小值。而平行的最 大最小函数pmax和pmin将返回一个与最长的向量长度相等的向量,向量中的元 素由参数中所有向量在相应位置的最大值(最小值)组成。绝大多数用户并不会 关心一个数字向量中的数字究竟是整数、实数还是复数。在计算机中运算是按 照双精度的实数或复数进行的。如果要使用复数,需要直接给出一个复数部 分。因此 sqrt(-17) 将会返回NaN(无效数值)和一个警告,而 sqrt(-17+01) 将按照复数进行运算。 23产生规则的序列 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这 样的构造可以用来产生一个递减的序列。函数seq()可以产生更为一般的序 列。函数有5个参数,但并不是每次都要全部指定。如果给出第一个和第二个参 数,那么它们将指定序列的首尾,也就是说在只给出两个参数时函数的作用相 当于冒号。seq(2,10)也就相当于2:10 函数seq()和其他许多R函数的参数可以指定名称的给出,此时它们出现 的次序并没有什么关系。第一二个参数的名称是from=lue和to= value,因 此seq(1,30), seq(from=1,to=30)和 seq(to=30,from=1)与1:30是相同的。seq(0其 后的两个参数分别是by=vae和 length= value,分别指定序列的步长与长度 如果这两个参数没有指定的话,默认的是by=1 例如 >seq(-5,5,by=.2) 在变量s3中产生向量c(-5.0,-4.8,-4.6, 4.6,4.8,5.0)。相似 的 s4<- seq (length=51, from=-5, by=2) 在s4中产生一个相同的向量。 第五个参数的名称是 along= vector,它只能作为唯一的参数出现,产生一个 序列一个相关的函数是rep(),这个函数可以用多种复杂的方法来复制一个对 象。最简单的形式是 s5 < rep(x, times=5) 它将把x在s5种首尾相连的复制5次
CHAPTER 2. 简单操作;数值与向量 6 产生一个长度为11的新向量v,逐个元素的进行运算,其中2*x被重复2.2次,y 被重复1次,常数1被重复11次。逐个元素进行运算的操作符包括+,-,*,/ ,^ 此外所有普通的运算函数都能够被使用。log, exp, sin, cos, tan,sqrt等 等,而且意义并没有什么变化。max和min的作用是选出所给向量中最大的或最 小的元素。range函数的值是一个长度为2的向量,即c(min(x),max(x))。 length(x)返回了向量x中元素的个数,也就是x的长度。sum(x)给出了x中所 有元素的总和,prod(x)给出x中所有元素的乘积。两个统计函数是mean(x) 和var(x),分别计算样本均值和样本方差,这两个函数分别相当于sum(x)/length(x), sum((x-mean(x))\^2)/(length(x)-1)。如果var()的参数是一个n*p的矩阵, 那么函数的值是一个p*p的样本协方差矩阵,认为每行是一个p变量的样本向 量。sort(x)返回一个与x具有相同长度的向量,其中的元素按招升序排列。还 有其他更灵活的排序功能(参见order()和sort.list())。需要注意不论参数中 有几个向量,max和min给出的是所有向量的一个最大值或最小值。而平行的最 大最小函数pmax和pmin将返回一个与最长的向量长度相等的向量,向量中的元 素由参数中所有向量在相应位置的最大值(最小值)组成。绝大多数用户并不会 关心一个数字向量中的数字究竟是整数、实数还是复数。在计算机中运算是按 照双精度的实数或复数进行的。如果要使用复数,需要直接给出一个复数部 分。因此 sqrt(-17) 将会返回NaN(无效数值)和一个警告,而 sqrt(-17+0i) 将按照复数进行运算。 2.3 产生规则的序列 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这 样的构造可以用来产生一个递减的序列。函数seq()可以产生更为一般的序 列。函数有5个参数,但并不是每次都要全部指定。如果给出第一个和第二个参 数,那么它们将指定序列的首尾,也就是说在只给出两个参数时函数的作用相 当于冒号。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。 例如 > seq(-5, 5, by=.2) -> s3 在变量s3中产生向量c(-5.0, -4.8, -4.6, ..., 4.6, 4.8, 5.0)。相似 的 > s4 <- seq(length=51, from=-5, by=.2) 在s4中产生一个相同的向量。 第五个参数的名称是along=vector,它只能作为唯一的参数出现,产生一个 序列一个相关的函数是rep(),这个函数可以用多种复杂的方法来复制一个对 象。最简单的形式是 > s5 <- rep(x, times=5) 它将把x在s5种首尾相连的复制5次