R语言初学指南
R for Beginners Chinese Edition 0.1 R语言入门必备教材导言 2基本原理与概念 3 21基木原理 2.2对象的产生,排列及删除 23在线帮助 3R的数据操作 31对象 32在文件中读写数据 33存储数据 14 34生成数据 34.1规则序列 5 342随机序列 18 35处理对象 19 35.1创建对象 35.2转换对象. 24 35.3算子 26 354访问一个对象的数值:下标系统 27 355访问对象的名称 30 3.5.6数据编辑器.. 32 357数学运算和一些简单的函数 32 358矩阵计算 34 4用R绘图 37 4.1管理绘图 37 4.1.1打开多个绘图装置 37 4.1.2图形的分割 38 4,2绘图函数 41 43低水平绘图命令 42 4.4绘图参数 44 45一个实例 45 46grid和 lattice包 49 5R的统计分析 56 51关于方差分析的一个简单例子 52公式 57 53泛型函数 59 5.4包 62 6R编程实践 65 6.1循环和向量化 65 62用R写程序 67 63编写你自己的函数 68 7R相关的文献 1导言 该手册是关于R的一个入门教材由于主要针对初学者,我将重点放在了 对R的工作原理的解释上。R涉及广泛,因此对于初学者来讲,了解和掌握 些基木概念及原理是很有必要的。在打下扎实的基础后,进行更深入的学习 将会变得轻松许多。本着深入浅出的宗旨,本手册将大量配合图表等形式 尽可能使用通俗的语言,使读者谷易理解而并不失细节 R是一个冇着统计分析功能及强大作图功能的软件系统,是由 Ross Ihaka 利 Robert gentleman1共同创立。R语言可以看作是由AT&T贝尔实验室所 创的S语言发展出的一种方言。因此,R即是一种软件也可以说是一种语 言。S语言现在主要内含在由 Insightful2公司经营的 S-PLUS软件中。R和S在 设计理念上存在有着许多不同:关于这方面的详细内容大家可以参考Iaka& Gentleman(1996)或RFAQ,该文档同时随R一起发布。 R是在GNU协议 General public licence4下免费发行的,它的开发及维护 现在则由R开发核心小组 R Development Core Team具体负责 R的安装文件有多种形式,有在Unⅸx或 Linux系统下所需的一些源代 码(主要用C及 Fortran编写),及在 Windows, Linux及 Macintosh上使用的预编 译二进制码。这些安装文件以及安装说明都可以在 Comprehensive R Archive Network(CRAN)5网站上下载。该网站提供的关于 Linux的安装文件只适用 于较新版本的 Linux。详情请参考CRAN网站 R内含了许多实用的统计分析及作图函数。作图函数能将产生的图片展 示在一个独立的窗口中,并能将之保存为各科形式的文件(jpg,png,bmp,ps, pdf,emf, pictet,xg;具体形式取决于操作系统)。统计分析的结果也能被直 接显示出来,一些中间结果(如P值,回归系数,残差等)即可保存到专门的 文件中,也可以直接用作进一步的分析。 在R语言中,使用者可以使用循环语句来连续分析多个数据集,也可将多 个不同的统计函数结合在一个语句中执行更复杂的分析。R使用者还可以借鉴 网上提供的用S编写的大量程序6,而且大多数都能被R直接调用。 非专业人员起初可能觉得R相对比较复杂。其实,R的一个非常突出的优 点正是它的灵活性。一般的软件往往会直接展示分析的结果,而R则将这些结 果都存在一个对象“ object”里面,所以常常在分析执行结束后并不显示任何结 Thaka r. &i gentleman R. 1996. R: a language for data analysis and graphics. Journal f Computational and graphical Statistice 5: 299-3141 http://www.insightful.com/products/spl us/default. asp http://cran.i-project.org/doc/faq/r-faq.html Formoreinformationhttp://www.gnu.org/ http://cran.r-project.org Forexamplehttp://stat.cmu.edu/s/ 果。使用者可能会对此感到困惑,其实这样的特点是非常有用的,因为我们 可以选择的从结果中只抽出我们感兴趣的部分。例如,我们要运行20个回归 分析而只想比较其回归系数,在R中就可以选择只显示所有分析得出的回归系 数,这样结果仅仅占了一排,而用有些软件可能会一下打开20个窗口。而在 下面的章节中,我们会看到更多能展示R相比传统软件更为灵活优越的例子 2基本原理与概念 如果R已经被安装在你的计算机中,它就能立即运行一些可执行的命令 了。R默认的命令提示符是>,它表示正在等待输入命令。如在 Windows系 统中打开 Rgui. exe,就能直接运行下拉菜单中的一些操作命令(如在线帮助, 打开文件.)。到这里,有些人可能会急着想知道更多的语句命令。其实,在 学习这些内容前,了解掌握一些R的基本工作原理是非常有必要的。这正是木 章所要讲的主要内容 木章首先简要描述R的工作原理。在第二节中,我将介绍一些基本的赋 值分配(“asgn”)的操作,如怎样产生对象( object),如何操作管理这些对象 等最后简要介绍R中非常有用的在线帮助 2.1基本原理 因为R是一种编程语言,一些对编程不太熟悉的人可能会望而却步。这种 障碍其实是完全没有必要,首先,R是一种解释型诘言,而不是编译语言,也 就意味着输入的命令能够直接被执行,而不需要像一些语言要首先构成一个 完整的程厅形式(如C, Fortan, Pascal,…) 第二,R的语法非常之简单和直观。例如,线性回归的命令1m(yx)表 示“以x为自变量,y为反应量来拟合一个线性模型”。合法的R函数总是带有 圆括号的形式,即使括号内没有内容(如8()。如果直接输入函数名而不输 入圆括号,R则会白动显示该函数的一些具体内容。在本手册中除在部分文字 已作出清楚的说明外,所有的函数后都接有圆括号以区别于对象 object) 当R运行时,所有变量,数据,函数及结果都以对象( objects)的形式存在 计算机的活动内存中,并冠有相应的名字代号。我们可以通过用一些运算操 作命令(如算术,逻辑,比较等)和一些函数 functions(其本身也是对象)来对 这些对象进行操作。运算操作非常简单,其细节将留在下章讨论(p.26).关 于R中的函数可用下面的图例来形象的描述: arguments function lt options- default arguments 上图中的参量 argument)可能是些对象(如数据,方程,算式,)。有 些参量在函数里被预设为缺省值,用户则可按需对其作个别的修改。所以运 行·个R函数可能不需要设定任何参量,原因是所有的参量都可以被默认为缺 省值,当然也有可能该函数本身就不含任何参量。由于这里主要是讲述R的工 作原理,对R函数的介绍将不再展开,在后面的章节中我们会看到关于构建及 使用各种函数的详细内容(p.68) 在R中进行的所有操作都是针对存储在活动内存中的对象的,因此就不涉 及到任何临时文件夹的使用(Fig.1)。对数据,结果或图表的输入与输出都 是通过在对计算机硬盘中的文件读写而实现。用户通过输入一些命令调用函 数,分析得出的结果可以被直接显示在屏幕上,也可以被存入某个对象或被 写入硬盘(如图片对象)。因为产生的结果本身就是一种对象,所以它们也能被 视为数据并能像一般数据那样被处理分析。数据文件即可从本地磁盘读取也 可通过网络传输从远程服务器端获得。 ase ey board command /stast/ library of mouse functions and operators /graphics/ functions data data” objects internet screen results” objects Active memory Hard disk Figure1:R工作原理示意图 所有能使用的R函数都被包含在一个库( library)中,该库存放在磁盘 的 R HOME/ library月录下( R HOME是最初安装R的地址)。这个月录下含 有具有各种功能的包( chages),各个包也是按照日录的方式组织起来的。 其中名为bae的包可以算是R的核心因为它内嵌了R语言中所有像数据读写与 操作这些最基本的函数。在上述日录中的每个包内,都有一个子日录R,这 个日录里又都含有一个与此包同名的文件(例如在包base中,有这样一个文 件 R HOME/ library/base/R/base)。该文件正是存放所有函数的地方 R语言中最简单的命令莫过于通过输入一个对象的名字来显示其内容了。 例如,一个名为n的对象,其内容是数值10: 10 方括号中的数字1表示从n的第一个元素廾始显示。其实该命令的功能在 这里于凶数 print相似输出结果与 print(n)相同(但有些情况下,例如内嵌 在一个函数或循环中时,就必须得用 print函数) 对象的名字必须是以一个字母开头(AZ或az),中间可以包含字母,数 字(09),点()及下划线(-).因为R对对象的名字区分人小写,所以x和X就可 以代表两个完全不同的对象(在 Windows操作系统中也是如此)。 22对象的产生,排列及删除 个对象可以通过赋值操作米产生,R语言中的赋值(“ assign”)符号一般 是由一个尖括号于一个负号组成的箭头形标志。该符号可以是从左到右的方 向,也可以相反: 15 15 5 >x<-1 >Ⅹ<-10 1 10 如果该对象已经存在,那么它以前的值将会自动被新值冲掉(这种修改只 会影响内存中的数据,操作结果暂时不会被保存到硬盘中)。在R中给对象赋 值有多种形式,可以是直接赋一个数值,也可以是一个算式或一个函数的结 果: >n<-10+2 > n 12 3+ rnorm(1) n 2.208807 运行 rnorm(1)将产生一个服从平均数为0标准差为1的标准正态分布的随 机变量(p.18)。当然你也可以只是输入函数或表达式而不把它的结果赋给某 个对象,但如果这样在窗口中展示的结果将不会被保存到内存中 >(10+2)*5 60 本文中,在不影响读者理解的情况下,一些赋值符号将会被省略。 函数1s的功能是显示所有在内存中的对象:只会列出对象名,如 >name<-" Carmen";n1<-10;n2<-100;m<-0.5 1s() 1]"m In1 noname 注意在R中应该用分号来隔开同一行中的不同命令语句。如果只要显示出 在名称中带有某个指定字符的对象,则通过设定选项 pattern来实现(可简写 为pat)) ls (pat ="m") "n iNane 如果进一步限为显示在名称屮以某个字母开头的对象,则可 Is (pat 运行函数1s.str(将会展示内存中所有对象的详细信息 ls. str () m mum 0.5 n1: num 10 n2 num 100 name chr carmen 选项 pattern在这里同样适用。在1s.str函数中另一个非常有用的选 项是max.eve1,它将规定显示所有关对象信息的咩细级别。缺省情况 下,1s.str将会列出关于对象的所有信息,包括数据框,矩阵,数据列 表的列数信息。因此展示结果可能会很长。但如果设定max.1evel=-1就可 以避免这种情况了 >M<-data frame(n1, n2, m) Is str(pat ="M") M: 'data frame 1 obs, of 3 variables 8 n1: num 10 $n2:num100 s m: num 0.5 ls str(pat=M", maxlevel=-1) M:“data. frame): 1 obs, of 3 variables 要在内存中删除某个对象,可利用函数rm:运行rm(x)将会删除对象x, 行rm(x,y)将会删除对象x和y,而运行rm(ist-ls0则会删除内存中的所有对 象.在上面所讲的1s()函数中的一些选项同样也可以运用到rm中來,以选择 的删除一些对象,如:rm(1ist=1s(pat="^m"))
**** Hidden Message *****
谢谢分享! 6666666666666666 66666666666666666666666666 激动人心,无法言表! 强烈支持楼主ing……
页:
[1]