R for Beginners Chinese Edition 2.0 Emmanuel Paradis Institut des Sciences de l'Evolution Universite Montpellier II F-34095 Montpellier cedex 05 France E-mail:paradisQisem.univ-montp2.fr Co-translated by:XF Wang,YH Xie,JT Li and GH Ding
R for Beginners Chinese Edition 2.0 Emmanuel Paradis Institut des Sciences de l’Evolution ´ Universit´e Montpellier II F-34095 Montpellier c´edex 05 France E-mail: paradis@isem.univ-montp2.fr Co-translated by: XF Wang, YH Xie, JT Li and GH Ding
目录 1导言 1 2基本原理与概念 3 2.1基本原理 ·。。 3 2.2对象的产生,排列及删除 5 2.3在线帮助 7 3R的数据操作 9 3.1对象....··. 9 32在文件中读写数据 11 3.3存储数据 14 3.4生成数据 15 3.4.1规则序列 15 3.4.2随机序列 18 3.5使用对象 19 3.5.1创建对象 19 3.5.2对象的类型转换 24 3.5.3运算符........ 26 3.5.4访问一个对象的数值:下标系统 27 3.5.5访问对象的名称 30 3.5.6数据编辑器····. 32 3.5.7数学运算和一些简单的函数 32 3.5.8矩阵计算 34 4R绘图 37 4.1管理绘图 37 4.1.1打开多个绘图设备 37 4.1.2图形的分割....... 38 4.2绘图函数 41 4.3低级绘图命令 42 4.4绘图参数 44 4.5一个实例 45 4.6grid和lattice包···················· 49
目录 1 导言 1 2 基本原理与概念 3 2.1 基本原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 对象的产生,排列及删除 . . . . . . . . . . . . . . . . . . . . . 5 2.3 在线帮助 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 R的数据操作 9 3.1 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 在文件中读写数据 . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 存储数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4 生成数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4.1 规则序列 . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4.2 随机序列 . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.5 使用对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.5.1 创建对象 . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.5.2 对象的类型转换 . . . . . . . . . . . . . . . . . . . . . . 24 3.5.3 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5.4 访问一个对象的数值:下标系统 . . . . . . . . . . . . . 27 3.5.5 访问对象的名称 . . . . . . . . . . . . . . . . . . . . . . 30 3.5.6 数据编辑器 . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5.7 数学运算和一些简单的函数 . . . . . . . . . . . . . . . . 32 3.5.8 矩阵计算 . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4 R绘图 37 4.1 管理绘图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.1 打开多个绘图设备 . . . . . . . . . . . . . . . . . . . . . 37 4.1.2 图形的分割 . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2 绘图函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3 低级绘图命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4 绘图参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.5 一个实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.6 grid 和lattice 包 . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5R的统计分析 56 51关于方差分析的一个简单例子......·.. 56 5.2公式.. 58 5.3泛型函数 59 5.4包...... 62 6R编程实践 65 6.1循环和向量化 65 67 6.3编写你自己的函数 68 7R相关的文献 72
5 R的统计分析 56 5.1 关于方差分析的一个简单例子 . . . . . . . . . . . . . . . . . . . 56 5.2 公式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.3 泛型函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.4 包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6 R编程实践 65 6.1 循环和向量化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.2 用R写程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.3 编写你自己的函数 . . . . . . . . . . . . . . . . . . . . . . . . . 68 7 R 相关的文献 72
导言 该手册是关于R的一个入门教材.由于主要针对初学者,我将重点放在了 对R的工作原理的解释上。R涉及广泛,因此对于初学者来讲,了解和掌握一 些基本概念及原理是很有必要的。在打下扎实的基础后,进行更深入的学习 将会变得轻松许多。本着深入浅出的宗旨,本手册将大量配合图表等形式, 尽可能使用通俗的语言,使读者容易理解而并不失细节。 R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka 和Robert Gentlemanl共同创立。R语言可以看作是由AT&T贝尔实验室所 创的$语言发展出的一种方言1。因此,R即是一种软件也可以说是一种语 言。S语言现在主要内含在由Insightful公司经营的S-PLUS软件中。R和S在 设计理念上存在有着许多不同:关于这方面的详细内容大家可以参考haka& Gentleman(1996)或R-FAQ3,该文档同时随R一起发布。 R是在GNU协议General Public Licence4下免费发行的,它的开发及维护 现在则由R开发核心小组R Development Core Team.具体负责。 R的安装文件有多种形式,有在Uniⅸ或Linux系统下所需的一些源代 码(主要用C及Fortran编写),及在Windows,Linux及Macintosh上使用的预编 译二进制码。这些安装文件以及安装说明都可以在Comprehensive R Archive Network(CRAN)5网站上下载。该网站提供的关于Linux的安装文件只适用 于较新版本的Linux。详情请参考CRAN网站。 R内含了许多实用的统计分析及作图函数。作图函数能将产生的图片展 示在一个独立的窗口中,并能将之保存为各种形式的文件(jPg,png,bmp,ps, pdf,emf,pictex,xfig;具体形式取决于操作系统)。统计分析的结果也能被直 接显示出来,一些中间结果(如P值,回归系数,残差等)既可保存到专门的 文件中,也可以直接用作进一步的分析。 在R语言中,使用者可以使用循环语句来连续分析多个数据集,也可将多 个不同的统计函数结合在一个语句中执行更复杂的分析。R使用者还可以借鉴 网上提供的用S编写的大量程序6,而且大多数都能被R直接调用。 非专业人员起初可能觉得R相对比较复杂。其实,R的一个非常突出的优 点正是它的灵活性。一般的软件往往会直接展示分析的结果,而R则将这些结 果都存在一个对象“object”里面,所以常常在分析执行结束后并不显示任何结 Thaka R.Gentleman R.1996.R:a language for data analysis and graphics.Journal of Computational and Graphical Statistics 5:299-314. 2 http://www.insightful.com/products/splus/default.asp 3http://cran.r-project.org/doc/FAQ/R-FAQ.html 4For more information:http://www.gnu.org/ 5http://cran.r-project.org/ For example:http://stat.cmu.edu/S/
1 导言 该手册是关于R的一个入门教材.由于主要针对初学者,我将重点放在了 对R的工作原理的解释上。R涉及广泛,因此对于初学者来讲,了解和掌握一 些基本概念及原理是很有必要的。在打下扎实的基础后,进行更深入的学习 将会变得轻松许多。本着深入浅出的宗旨,本手册将大量配合图表等形式, 尽可能使用通俗的语言,使读者容易理解而并不失细节。 R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka 和Robert Gentleman1共同创立。R语言可以看作是由AT&T贝尔实验室所 创的S语言发展出的一种方言1。因此,R即是一种软件也可以说是一种语 言。S语言现在主要内含在由Insightful2公司经营的S-PLUS软件中。R和S在 设计理念上存在有着许多不同:关于这方面的详细内容大家可以参考Ihaka & Gentleman (1996) 或R-FAQ3,该文档同时随R一起发布。 R是在GNU协议General Public Licence4下免费发行的,它的开发及维护 现在则由R开发核心小组R Development Core Team具体负责。 R的安装文件有多种形式,有在Unix 或Linux系统下所需的一些源代 码(主要用C及Fortran 编写),及在Windows, Linux及Macintosh上使用的预编 译二进制码。这些安装文件以及安装说明都可以在Comprehensive R Archive Network (CRAN)5 网站上下载。该网站提供的关于Linux的安装文件只适用 于较新版本的Linux。详情请参考CRAN网站。 R内含了许多实用的统计分析及作图函数。作图函数能将产生的图片展 示在一个独立的窗口中,并能将之保存为各种形式的文件(jpg, png, bmp, ps, pdf, emf, pictex, xfig; 具体形式取决于操作系统)。统计分析的结果也能被直 接显示出来,一些中间结果(如P-值,回归系数,残差等)既可保存到专门的 文件中,也可以直接用作进一步的分析。 在R语言中,使用者可以使用循环语句来连续分析多个数据集,也可将多 个不同的统计函数结合在一个语句中执行更复杂的分析。R使用者还可以借鉴 网上提供的用S编写的大量程序6 ,而且大多数都能被R直接调用。 非专业人员起初可能觉得R相对比较复杂。其实,R的一个非常突出的优 点正是它的灵活性。一般的软件往往会直接展示分析的结果,而R则将这些结 果都存在一个对象“object”里面,所以常常在分析执行结束后并不显示任何结 1 Ihaka R. & Gentleman R. 1996. R: a language for data analysis and graphics. Journal of Computational and Graphical Statistics 5: 299–314. 2 http://www.insightful.com/products/splus/default.asp 3http://cran.r-project.org/doc/FAQ/R-FAQ.html 4For more information: http://www.gnu.org/ 5http://cran.r-project.org/ 6For example: http://stat.cmu.edu/S/ 1
果。使用者可能会对此感到困惑,其实这样的特点是非常有用的,因为我们 可以选择的从结果中只抽出我们感兴趣的部分。例如,我们要运行20个回归 分析而只想比较其回归系数,在R中就可以选择只显示所有分析得出的回归系 数,这样结果仅仅占了一排,而用有些软件可能会一下打开20个窗口。而在 下面的章节中,我们会看到更多能展示R相比传统软件更为灵活优越的例子。 2
果。使用者可能会对此感到困惑,其实这样的特点是非常有用的,因为我们 可以选择的从结果中只抽出我们感兴趣的部分。例如,我们要运行20个回归 分析而只想比较其回归系数,在R中就可以选择只显示所有分析得出的回归系 数,这样结果仅仅占了一排,而用有些软件可能会一下打开20个窗口。而在 下面的章节中,我们会看到更多能展示R相比传统软件更为灵活优越的例子。 2