资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,语言初步,张金龙,jinlongzhang01,June 3,2010,数据处理、绘图与编程,1,.,报告内容,一,R简介,二 函数与对象,三 脚本编程,四,R绘图,五 编写函数,六 数据保存,2,.,一,R 简介,3,.,什么是R?,图1 R首页的图形,R,是一种统计绘图语言,也指实现该语言的软件。,The R Project for Statistical Computing,4,.,简 史,R语言是从S统计绘图语言演变而来,可看作S的“方言”。,S语言上世纪70年代诞生于贝尔实验室,由,Rick Becker,John Chambers,Allan Wilks,开发。,基于S语言开发的商业软件,Splus,,可以方便的编写函数、建立模型,具有良好的扩展性,在国外学术界应用很广。,1995年由新西兰Auckland大学统计系的,R,obert Gentleman和,R,oss Ihaka,基于S语言的源代码,编写了一能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言。,5,.,R的特点,多领域的统计资源,目前在R网站上约有2400个程序包,涵盖了基础统计学、社会学、经济学、生态学、空间分析、系统发育分析、生物信息学等诸多方面。,跨平台,R可在多种操作系统下运行,如Windows、MacOS、多种Linux和UNIX等。,命令行驱动,R即时解释,输入命令,即可获得相应的结果。,6,.,为什么选择R?,丰富的资源,涵盖了多种行业数据分析中几乎所有的方法。,良好的扩展性,十分方便得编写函数和程序包,跨平台,可以胜任复杂的数据分析、绘制精美的图形。,完备的帮助系统,每个函数都有统一格式的帮助,运行实例。,GNU软件,免费、软件本身及程序包的源代码公开。,7,.,R与其他统计软件比较,SAS:,速度快,有大量统计分析模块,可扩展性稍差,昂贵。,SPSS:,复杂的用户图形界面,简单易学,但编程十分困难。,Splus:,运行S语言,具有复杂的界面,与R完全兼容,昂贵。,8,.,R的缺点,用户需要对命令熟悉,与代码打交道,需要记住常用命令。,占用内存,所有的数据处理在内存中进行,不适于处理超大规模的数据。,运行速度稍慢,即时编译,约相当于C语言的1/20。,相比点击鼠标进行操作,R仍能够大大提高效率。,9,.,图2,R软件首页,www.r-project.org/,10,.,CRAN,The Comprehensive R Archive Network,简称,CRAN,,由世界几十个镜像网站组成网络,提供下载安装程序和相应软件包。各镜像更新频率一般为1-2天,推荐镜像:,中国的镜像:数学所,ftp.ctex.org/mirrors/CRAN/,即时更新的CRAN源,cran.r-project.org/,11,.,Windows下载和安装R,CRAN:BinariesWindowsbase,下载完成后,双击,R-2.11.0-win32.exe,开始安装。,一直点击下一步,各选项默认,语言建议选英文。,图3 R2.11.0下载页面,12,.,图 4 R登陆界面(Windows版),路径:开始所有程序R 2.11.0,菜单栏,快捷按钮,控制台,光标:等待输入,13,.,图 5 R Gui 的File菜单,14,.,图 6 R Gui 的Edit菜单,15,.,图 7 R Gui 的Packages菜单,16,.,图 8 R Gui 的Help菜单,17,.,R程序包(R Packages),程序包是什么?,R程序包是多个函数的集合,具有详细的说明和示例。,Window下的R程序包是经过编译的zip包。,每个程序包包含R函数、数据、帮助文件、描述文件等。,为什么要安装程序包?,R程序包是R功能扩展,特定的分析功能,需要用相应的程序包实现。,例如:系统发育分析,常用到ape程序包,群落生态学vegan包等。,18,.,常用R程序包(I),ade4,利用欧几里得方法进行生态学数据分析,adephylo,系统进化数据挖掘与比较方法,ape,系统发育与进化分析,apTreeshape,进化树分析,boot,Bootstrap,检验,cluster,聚类分析,ecodist,生态学数据相异性分析,FD,功能多样性分析,geiger,物种形成速率与进化分析,19,.,常用R程序包(II),Graphics,绘图,lattice,栅格图,maptools,空间对象的读取和处理,mefa,生态学和生物地理学多元数据处理,mgcv,广义加性模型相关,mvpart,多变量分解,nlme,线性及非线性混合效应模型,ouch,系统发育比较,pgirmess,生态学数据分析,phangorn,系统发育分析,20,.,常用R程序包(III),picante,群落系统发育多样性分析,raster,栅格数据分析与处理,seqinr,DNA,序列分析,sp,空间数据处理,spatstat,空间点格局分析,模型拟合与检验,splancs,空间与时空点格局分析,stats,R,统计学包,SDMTools,物种分布模型工具,vegan,植物与植物群落的排序,生物多样性计算,21,.,图 9 CRAN Task Views:对程序包的分类介绍,CRAN Task Views,22,.,图 10 vegan包页面,三种平台上的程序包,23,.,R程序包,在CRAN 提供了每个包的源代码和编译好的程序包,以vegan包为例,CRAN提供了:,Package source:vegan_1.17-2.tar.gz,MacOS X binary:vegan_1.17-2.tgz,Windows binary:vegan_1.17-2.zip,Reference manual:vegan.pdf,Window下程序包为zip文件,安装时不要解压缩。,24,.,安装程序包的方法,1 用函数,install.packages(),,如果已经连接到互联网,在括号中输入要安装的程序包名称,选择镜像后,程序将自动下载并安装程序包。,例如:要安装,picante,包,在控制台中输入,install.packages(picante),2 安装本地,zip,包,路径:,Packagesinstall packages from local files,选择本地磁盘上存储,zip,包的文件夹。,25,.,程序包使用,程序包的中函数,都要先导入,再使用,因此导入程序包是第一步。,在控制台中输入如下命令:,library(vegan),library(ade4),程序包内的函数的用法与,R,内置的基本函数用法一样。,library(vegan),This is vegan 1.17-2,26,.,查看程序包帮助文件,vegan 程序包内部都有哪些函数?分别有什么功能?,查询程序包内容最常用的方法:,1 菜单 帮助Html帮助,2 查看pdf帮助文档,27,.,查看函数的帮助文件,函数的默认值是什么?怎么使用?使用时需要注意什么问题?需要查询函数的帮助。,1,?,t.test,2 RGuiHelpHtml help,3,apropos,(,t.test,),4,help,(,t.test,),5,help.search,(,t.test,),6 查看R包pdf手册,28,.,图 11,R帮助文件的内容与格式,29,.,帮助文件的内容,lmstats#,函数名及所在包,Fitting Linear Models#,标题,Description#,函数描述,Usage#,默认选项,Arguments#,参数,Details#,详情,Author(s)#,作者,References#,参考文献,Examples,#举例,30,.,练习一 安装R并导入程序包,1.安装R软件、熟悉菜单,2.安装程序包,3.调用程序包,查看程序包的帮助,library(vegan),library(ape),查找,ape,包中,plot.phylo,函数的帮助,输入,?plot.phylo,将其中的Example粘贴到控制台中,查看运行的结果。,31,.,R图形界面:R commander,R commander是R的图形界面之一,是John Fox教授编写的,适用于不希望R编程的用户。随着用户的操作,其窗口还可以显示出相应操作的R程序,对于初学者可能会有帮助。,安装R commander,install.packages(Rcmdr),R将自动下载并安装Rcmdr所需的所有程序包,32,.,图形界面之一:R Commander,图 12 R commander 界面,library,(Rcmdr),界面操作代码,结果输出,33,.,为什么要学习编程?,界面操作直观易学,但也存在一些不足:,(1)操作的过程难以保存,数据处理不够灵活,在进行步骤繁多的数据处理工作时十分费时费力;,(2)在建立模型或自己编写函数时也会遇到困难。,而这些困难可以通过编程解决。,要学习R编程,首先要了解R的函数、对象及其操作。,34,.,二 函数与对象,35,.,R的函数,R,是一种解释性语言,输入后可直接给出结果。,功能靠函数实现。,函数形式:,函数(输入数据,参数=),如果没有指定,则参数的以默认值为准。,例如:,平均值,mean(x,trim=0,na.rm=FALSE,.),线性模型,lm(yx,data=test),36,.,R的函数,每一个函数执行特定的功能,后面紧跟括号,例如:,平均值,mean,(),求和,sum,(),绘图,plot,(),排序,sort,(),除了基本的运算之外,,R,的函数又分为”,高级”,和”,低级”,函数,高级函数可调用低级函数,这里的”高级”函数习惯上称为泛型函数。,如,plot(),就是泛型函数,可以根据数据的类型,调用底层的函数,应用相应的方法绘制相应的图形。这就是面向对象编程的思想。,37,.,R有哪些函数?,查询的方法:,HelpHtml helppackages,log(),log10(),exp(),sin(),cos(),tan(),asin(),acos(),binom.test(),fisher.test(),chisq.test(),glm(y x1+x2+x3,binomial),friedman.test(),mean(),sd(),var(),.,38,.,图13 箱线图修饰前后(左:默认值,右:修改属性后),函数的调用方法,函数名()如,plot(),lm(),并将对象放入括号中。,R函数调用及其选项,39,.,R函数调用及其选项,箱线图绘制函数的调用,boxplot(daytype,data=bac,col=red,xlab=Virus,ylab=days),daytype,,以,type,为横轴,,day,为纵轴绘制箱线图。,data=bac,数据来源,bac,col=“red”,箱线图为红色,xlab=“Virus”,横轴名称为,Virus,ylab=“days”,纵轴名称为,days,40,.,练习二:查询函数帮助,查看,boxplot,的帮助文件,?boxplot,查看最后的,examples,将帮助文件中的内容粘贴到控制台中,运行并观看运行结果。,boxplot(count spray,data=InsectSprays,col=lightgray),参数更改,boxplot(count spray,data=InsectSprays,col=red,xlab=spray,ylab=counts),41,.,赋值与注释,在控制台中键入如下命令,2+2,a-2,代替,b-2,c-a+b,c,#注释,赋值符号,42,.,如何为对象起名?,R,处理的所有数据、变量、函数和结果都以对象的形式保存。,1.,区分大小,写,注意,China,和,china,的不同。,2.,不能用数字作为变量,对象也不能用数字开头,,但是数字可以放在中间或结尾,如,2result,与,result2,,,后者是合法的。,3.,建议不要用过短的名称。可以用”.”作为间隔,例如,anova.result1,。,4.,不要使用保留名:,NA,NaN,pi,LETTERS,letters,month.abb,month.name,43,.,元素的类型,对象是由各元素组成的。每个元素,都有自己的数据类型,数值型,Numeric,如,100,0,-4.335,字符型,Character,如,“China”,逻辑型,Logical,如,TRUE,FALSE,因子型,Factor,表示不同类别,复数型,Complex,如:,2+3i,44,.,对象的类(class),向量,(vector),一系列元素的组合。,如,c(1,2,3);,c(a,a,b,b,c),因子,(factor),因子是一个分类变量,c(a,a,b,b,c),矩阵,(matrix),二维的数据表,是数组的一个特例,x-1:12;dim(x)=3),数据框,(dataframe),是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。,列表,(list),列表可以包含任何类型的对象。,可以包含向量、矩阵、高维数组,也可以包含列表,46,.,运算符,数学运算 运算后给出数值结果,+,-,*,/,(幂),比较运算 运算后给出判别结果,(,TRUE FALSE,),=,=,!=,逻辑运算 与、或、非,!,&,&,|,|,47,.,数据表的行与列,低地,33,220,25,10,49,样方5,低地,20,260,24,12,38,样方4,山坡,45,390,20,11,46,样方3,山坡,30,350,26,12,51,样方2,山顶,25,600,22,15,40,样方1,类型,坡度,海拔,属数,科数,物种数,行名Row names,字符串,列名 Column names,每列可看做带名称的向量,表1 数据表、数据框与向量,字符串、因子,每行作为一个Entry,48,.,数据框的组成,每个数据表可以看作一个数据框,(dataframe),。,每一列,(column),作为一个向量,(vector),。,由很多不同类型的向量组成,如字符型,因子型,数值型。,每一行,(row),作为一个记录,(entry),如何生成数据框?,两种办法:,(1)从外部数据读取,(2)各类型因子组合成数据框,49,.,外部数据读取,最为常用的数据读取方式是用,read.table,(),函数或,read.csv,(),函数读取外部,txt,或,csv,格式的文件。,txt,文件,制表符间隔,csv,文件,逗号间隔,一些,R,程序包(如,foreign,)也提供了直接读取,Excel,SAS,dbf,Matlab,spss,systat,Minitab,文件的函数。,50,.,read.csv(),的使用,例:,test.data-read.csv(D:/R/test2.csv,header=T),header=T,表示将数据的第一行作为标题。,read.table(file=file.choose(),header=T),可以弹出对话框,选择文件。,51,.,例:从数据输入到t检验,编号,1,2,3,4,5,6,身高 m,1.75,1.80,1.65,1.90,1.74,1.91,体重kg,60,72,57,90,95,72,表2 六名患者的身高和体重,现有6名患者的身高和体重,检验体重除以身高的平方是否等于22.5。,52,.,第一种方式:从控制台输入数据,数据量较少时可以从控制台直接输入:,height-c(1.75,1.80,1.65,1.90,1.74,1.91),weight-c(60,72,57,90,95,72),sq.height-height2,ratio-weight/sq.height,t.test(ratio,mu=22.5),53,.,第二种方式 从外部读取数据,数据量较大时用,read.table,函数从外部,txt,文件读取,第1步 将,Excel,中的数据另存为,.txt,格式(制表符间隔)或,.csv,格式。,第2步 用,read.table,(),或,read.csv,(),函数将数据读入R工作空间,并赋值给一个对象。,54,.,图14 在Excel中将数据存为txt文件,55,.,例:t检验(续),一般从txt文档读取数据。每一行作为一个观测值。每一行的变量用制表符,空格或逗号间隔开。,read.table,(”位置”,header=,T,),read.csv,(”位置”,header=,T,),#从外部读取数据,data1-read.table(d:/t.test.data.txt,header=T),bmi-data1$weight/data1$height2,t.test(bmi,mu=22.5),#t检验,56,.,练习三:数据读取和t检验,将表2中的数据录入,Excel,中,另存为,t.test.txt,文件。,用,read.table,函数读取该文件。,t.test.data-read.table(“X:/t.test.txt”,header=TRUE),对变量,t.test.data,中的,attach(t.test.data),ratio-weight/height2,t.test(ratio),57,.,例:单因素方差分析,将三种不同菌型的伤寒病毒,a,b,c,分别接种于,10,9,,和,11,只小白鼠上,观察其存活天数,问三种菌型下小白鼠的平均存活天数是否有显著差异。,a菌株:2,4,3,2,4,7,7,2,5,4,b菌株:5,6,8,5,10,7,12,6,6,c菌株:7,11,6,6,7,9,5,10,6,3,10,58,.,准备数据表,图15 数据表的准备,day和type 各为一列,59,.,例:方差分析(续),#数据读取,将,test1.txt,中的内容保存到,bac,中,,header=T,表示保留标题行。,bac-read.table(d:/anova.data.txt,header=T),#将,ba,数据框中的,type,转换为因子,(factor),bac$type-as.factor(bac$type),ba.an-aov(lm(daytype,data=bac),summary(ba.an),boxplot(daytype,data=bac,col=red),60,.,图16 三种菌型对小白鼠影响的箱线图,61,.,练习四:方差分析和箱线图绘制,1 在,excel,中准备数据表,2 用,R,读取数据表,3 输入如下命令进行方差分析、绘制箱线图,boxplot(daytype,data=bac,col=red),ba.an30的行,提取其中的某一列,进行分析等。,63,.,向量的创建,四种类型的向量,字符型,character-c(China,Korea,Japan,UK,USA,France,India,Russia),数值型,numeric-c(1,3,6,7,3,8,6,4),逻辑型,logical-c(T,F,T,F,T,F,F,T),复数型 略,64,.,向量的创建,生成向量的函数,c(),rep(),seq(),”:”,c,(2,5,6,9),rep,(2,times=4),seq,(from=3,to=21,by=3),1 3 6 9 12 15 18 21,“,:,”,1:15,1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,通过与向量的组合,产生更为复杂的向量。,rep,(1,:,2,c,(10,15),65,.,向量创建产生随机数,runif,(10,min=0,max=1),rnorm,(10,mean=0,sd=1),几个随机数的相关函数,概率密度,dunif,(x,min=0,max=1,log=FALSE),累积函数,punif,(q,min=0,max=1,),分位数,qunif,(p,min=0,max=1,),随机均匀分布,runif,(n,min=0,max=1),66,.,矩阵的创建,生成矩阵的函数,dim,(),和,matrix,(),dim()定义矩阵的行列数,例如:,x-1:12,dim(x)-c(3,4),1,2,3,4,1,1 4 7 10,2,2 5 8 11,3,3 6 9 12,matrix.x-matrix(1:12,nrow=3,byrow=T),t,(x)#,转置 为行或列添加名称:,row.names,(),col.names,(),67,.,数据框的创建,创建数据框的函数:,data.frame(),as.data.frame(),cbind(),rbind(),cbind,(),#,按列组合成数据框,rbind,()#,按行组合成数据框,data.frame,(),#生成数据框,head,()#,默认访问数据的前6行,68,.,列表的创建,列表可以是不同类型甚至不同长度的向量(数值型,逻辑型,字符型等等)、数据框甚至是列表的组合。,list,(),例如,list(character,numeric,logical,matrix.x),69,.,类的判断,对象类型判断,mode(),判断存储的类型,class(),判断数据的类,根据数据的类,采用相应的处理方法。,以下函数,主要用在函数处理异常时使用,目的是增强程序的稳健性。,is.numeric(),#返回值为,TRUE,或,FALSE,is.logical(),#是否为逻辑值,is.charactor(),#是否为字符串,is.null(),#是否为空,is.na(),#是否为na,70,.,类的转换,as.numeric(),#转换为数值型,as.logical(),#转换为逻辑型,as.charactor(),#转换为字符串,as.matrix(),#转换为矩阵,as.data.frame(),#转换为数据框,as.factor(),#转换为因子,71,.,向量内的元素引用,#Dalgaard书中的例子,intake.pre-c(5260,5470,5640,6180,6390,6515,6805,7515,7515,8230,8770),intake.post-c(3910,4220,3885,5160,5645,4680,5265,5975,6790,6900,7335),intake.pre5;,#引用第5个元素,intake.prec(3,5,7),#引用第3,5,7个元素,v-c(3,5,7);intake.prev;,intake.pre1:5;,#引用第1到5个元素,intake.pre-c(3,5,7),#去除第3,5,7元素,72,.,数据框内元素的引用,intake 7000,1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE,intake.preintake.pre 7000,intake.pre 7000&intake.pre 7000&intake.pre=8000,76,.,练习五:下标和条件筛选,创建一个,2,到,50,的向量,vector1,2,4,6,8,.,48,50,vector140,77,.,排 序,将向量中的元素按照一定顺序排列。,sort,(),按数值大小排序,举例:,intake$intake.pre,sort,(intake$intake.pre),order,(),默认给出从小到大的出现序号。,order,(intake$post),o-intakeorder(intake$intake.pre),78,.,工作空间,image,R,的所有对象都在计算机内存的工作空间中。,ls,(),列出工作空间中的对象,rm,(),删除工作空间中的对象,rm,(list=,ls,(),删除空间中所有对象,save.image,(),保存工作镜像,sink,(),将运行结果保存到指定文件中,getwd,(),显示当前工作文件夹,setwd,(),设定工作文件夹,可将结果保存在,image,中,形式为,.Rdata,文件,里面保存了R当前工作空间中的各种对象,包括函数。,79,.,输入历史 history,输入的命令,在R中作为历史,history,保存,可输入函数,history(),#查看输入历史,history(Inf),#查看打开R之后所有的输入,可用向上或向下的箭头切换输入的行。,80,.,练习六:了解工作路径,1,查看当前R工作的空间目录,getwd,(),2,将R工作的路径设置为,d:/data/,setwd(d:/data),save.image(example.Rdata),load(example.Rdata),3,历史,history(Inf),81,.,三 脚本编程,Scripting,82,.,脚本语言,脚本语言,脚本语言,(scripting language),又称动态语言,是依靠解释器完成相应的功能的一类计算机语言,通常以,ASCII,码的文本格式保存源程序。,特点,脚本语言语法和结构通常比较简单,不需要编译,通过解释器对脚本进行解释,从而给出结果,能用简单的代码完成复杂的功能,但是速度较慢。,常见的脚本语言,Windows,批处理程序,PHP,Perl,Python,Ruby,JavaScript等。,83,.,集成开发环境,很多计算机语言都有IDE(,integrated development environment),即集成开发环境,如 Windows的VisualStudio,Visual Basic等等。,但是R通常无需集成开发环境,脚本在一般的文本编辑器里即可编辑。,如 Windows自带的记事本,Notepad+,UltraEdit,TinnR。,Linux下的Vi,Vim,Emacs等等。,在代码较多的情况下,常需要对行数、函数、括号、函数选项等进行高亮显示,设置成不同的颜色,以减少错误的发生。,84,.,编辑器,R自带的脚本编辑器,Editplus,(,),TinnR,(,www.sciviews.org/Tinn-R/,),Ultraedit,(,等等,85,.,图17,TinnR,对,R,脚本的高亮显示,86,.,图18,NotePad+,对,R,脚本的高亮显示,87,.,例-线性回归,转速rpm,20,22,24,26,28,30,32,34,36,38,40,42,杂质率%,8.4,9.5,11.8,10.4,13.3,14.8,13.2,14.7,16.4,16.5,18.9,18.5,对一批涂料进行研究,确定搅拌速度对杂质含量的影响,数据如下,试进行回归分析,表3 搅拌速度对涂料中杂质的影响,88,.,脚本举例,#将以下代码粘贴到编辑器中,另存为,regression.r,文件。,rate-c(20,22,24,26,28,30,32,34,36,38,40,42),impurity-c(8.4,9.5,11.8,10.4,13.3,14.8,13.2,14.7,16.4,16.5,18.9,18.5),plot(impurityrate),regFileOpen Script#Ctrl+R运行,3,直接粘贴到R控制台,ctrl+c,ctrl+v,第三种最为简单直接,90,.,练习十:R脚本运行,将R命令粘贴到记事本中,另存为,regression.R,文件。,分别通过三种方式运行R脚本。,91,.,四 R绘图,92,.,图19,R,绘制的图形,93,.,绘制地图,图20,左图 maps包 map()右图 PBSmapping包 addBubbles(),94,.,绘制地图,图21,fields,包实例,spdep,包实例,95,.,空间分析绘图,图22,gstat,程序包实例,96,.,R绘图功能,R具备卓越的绘图功能,通过参数设置对图形进行精确控制。绘制的图形能满足出版印刷的要求,可以输出Jpg、tiff、eps、emf、pdf、png等各种格式。,通过与GhostScript软件的结合,可以生成600dpi,1200dpi的等各种分辨率和尺寸的图形。,绘图是通过绘图函数结合相应的选项完成的。,绘图函数包括,高级绘图函数,和,低级绘图函数,。,97,.,高级绘图函数,plot(),绘制散点图等多种图形,根据数据的类,调用相应的函数绘图,hist(),频率直方图,boxplot(),箱线图,stripchart(),点图,barplot(),柱状图,dotplot(),点图,piechart(),饼图,matplot(),数学图形,98,.,图23 散点图与箱线图,99,.,低级绘图函数,lines(),添加线,curve(),添加曲线,abline(),添加给定斜率的线,points(),添加点,segments(),折线,arrows(),箭头,axis(),坐标轴,box(),外框,title(),标题,text(),文字,mtext(),图边文字,100,.,绘图参数,参数用在函数内部,在没有设定值时使用默认值。,font,=,字体,lty,=,线类型,lwd,=,线宽度,pch,=,点的类型,xlab,=,横坐标,ylab,=,纵坐标,xlim,=,横坐标范围,ylim,=,纵坐标范围,也可以对整个要绘制图形的各种参数进行设定,参见,par(),101,.,举例:绘图,生成0到2之间的50个随机数,分别命名为x,y,x-runif(50,0,2),y-runif(50,0,2),绘图:将主标题命名为“散点图”,横轴命名为”横坐标”,纵轴命名为“纵坐标”,plot(x,y,main=散点图,xlab=横坐标,ylab=纵坐标),text(0.6,0.6,text at(0.6,0.6),abline(h=.6,v=.6),102,.,图24 绘图举例,103,.,例:分步绘图,1.打开绘图窗口,不绘制任何对象,plot(x,y,type=n,xlab=,ylab=,axes=F),2.添加坐标点,points(x,y),3.添加坐标轴,axis(1);axis(at=seq(0.2,1.8,0.2),side=2),4.补齐散点图的边框,box(),5.添加标题、副标题、横轴说明、纵轴说明,title(main=Main title,sub=subtitle,xlab=x-label,ylab=y-label),104,.,图25 分步绘图,1,2,3,4,5,6,105,.,一页多图,图26 一页多图,par(),par(mfrow=c(2,2),.,106,.,在原有图形上添加元素,举例:,x-rnorm(100),#生成随机数,hist(x,freq=F),#绘制直方图,curve(dnorm(x),add=T),#添加曲线,h-hist(x,plot=F),#绘制直方图,ylim-range(0,h$density,dnorm(0),#设定纵轴的取值范围,hist(x,freq=F,ylim=ylim),#绘制直方图,curve(dnorm(x),add=T,col=,red),#添加曲线,107,.,图27 在原有直方图上添加曲线,108,.,练习八:绘图练习,练习1 将,Rplots.r,中的代码拷贝到R控制台中,查看R绘制的图形。,练习2 对例进行回归分析,并绘制散点图,并为散点图添加回归直线。,plot(impurityrate),reg-lm(impurityrate),abline(reg,col=red),summary(reg),109,.,五 编写函数,110,.,编程基础,R可以灵活的编写程序,用户自己编写的程序可以直接调用。编程时无需声明变量的类型,这与C,C+等语言不同。,基本格式,函数名-function(数据,参数1=默认值,),异常处理;,表达式(循环/判别);,return(返回值);,函数内部也可用#添加注释,111,.,函数实例,图28 函数实例,data2mat(),112,.,程序流程控制,if,if,(条件)表达式,if,(条件)表达式1,else,表达式2,举例,p=0.03,if,(p=0.05),print,(,p 0.05!),113,.,循环 for,while,for(,变量,in,向量,),表达式,用法:,for,(i in 1:10),print,(i),while(,条件,),表达式,用法:,i-1,while,(i10),print,(i);i-i+1,114,.,返回值,返回值表示函数输出的结果。,返回值必须是一个对象。,R默认将最后一行作为返回值。,如果函数的结果需要有多个返回值,可以创建一个,list(),,并返回该对象。,也可以用,return(),函数,设定返回值。,但是一个函数的返回的对象只有一个。,115,.,异常处理,如数据输入不能满足要求,或者参数设定错误等等,可能造成函数给出错误的结果,则需要对函数的运行过程发出警告或终止,以提高程序的稳健性。,警告的写法,if(any(is.na(inputdata),inputdata-na.omit(inputdata),cat(“NAs are found in the input data,and has been removed.n),终止的写法,if(any(is.na(xx)stop(NAs are not allowed!n),116,.,函数举例,问题,:,输入直角三角形的两个边长,求其斜边长。,定义函数:,rcal-function(x,y),z-x2+y2,result-sqrt(z),return(result),调用函数:,rcal(3,4),117,.,练习九 编写函数,编写一个函数,给出两个数之后,直接给出这两个数的平方和。,sqtest-function(x,y),z1=x2;z2=y2;z3=z1+z2;,return(z3);,118,.,六 数据保存,119,.,write.table(),write.csv(),save.image(),sink(),unlink(),若有,LaTeX,基础,可以用,Sweave(),函数,该函数能将脚本、程序说明和运算结果直接保存成,.tex,文件,用,LaTeX,编译成,pdf,文件。,数据保存,120,.,内容回顾,R,是开源的统计绘图软件,也是一,种脚本语言,,有大量的程序包可以,利用。,R,中,的向量、列表、,数组、函数等都是对象,可以方便的查询和引用,并进行条件筛选。,R,具,有精确控制的绘图功能,,生,成的图可以另存为多种格式,。,R,编写函数无,需声明变量的类型,能利用循环,、条件语句,控制程序的流程。,121,.,推荐的教材,Crawley,Statistics an introduction using R,Peter Dalgaard,Introductory statistics with R,E.Paradis,R for Beginners,Verzani,SimpleR.,D G Rossiter,Introduction to the R Project for Statistical Computing for use at ITC,J.Maindonald,Using R for data analysis and graphics introduction code and commentary using R,Venables,W.N.&Ripley,B.D.,Modern Applied Statistics with S,122,.,R网络资源,R主页:,www.r-project.org,R资
展开阅读全文