R软件操作分析_第1页
R软件操作分析_第2页
R软件操作分析_第3页
R软件操作分析_第4页
R软件操作分析_第5页
已阅读5页,还剩228页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、R 基础知识一、R简介二、R的数据结构三、R程序包四、R函数五、 R绘图六、控制流软件软件:志愿者管理的软件。:志愿者管理的软件。u免费免费u运算功能强大运算功能强大.u不依赖于操作系统。不依赖于操作系统。u帮助功能完善。帮助功能完善。u统计分析能力尤为突出。统计分析能力尤为突出。u可移植性强。可移植性强。u强大的拓展与开发能力。强大的拓展与开发能力。u灵活而不死板。灵活而不死板。一、R 简介什么是R?图1 R首页的图形R是一种统计绘图语言,也指实现该语言的软件。The R Project for Statistical Computing 简 史 R语言是从S统计绘图语言演变而来,可看作S的

2、“方言”。 S语言上世纪70年代诞生于贝尔实验室,由Rick Becker, John Chambers, Allan Wilks开发。 基于S语言开发的商业软件Splus,可以方便的编写函数、建立模型,具有良好的扩展性,在国外学术界应用很广。 1995年由新西兰Auckland大学统计系的Robert Gentleman和Ross Ihaka,基于S语言的源代码,编写了一能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言。R的无私奉献者Bill Venables Robert Gentleman Ross Ihaka R的特点多领域的统计资源 目前在R网站上约有

3、2400个程序包,涵盖了基础统计学、社会学、经济学、生态学、空间分析、系统发育分析、生物信息学等诸多方面。跨平台 R可在多种操作系统下运行,如Windows、MacOS、多种Linux和UNIX等。命令行驱动 R即时解释,输入命令,即可获得相应的结果。为什么选择R?丰富的资源 涵盖了多种行业数据分析中几乎所有的方法。良好的扩展性 十分方便得编写函数和程序包,跨平台,可以胜任复杂的数据分析、绘制精美的图形。完备的帮助系统 每个函数都有统一格式的帮助,运行实例。GNU软件 免费、软件本身及程序包的源代码公开。R的缺点用户需要对命令熟悉 与代码打交道,需要记住常用命令。占用内存 所有的数据处理在内存

4、中进行,不适于处理超大规模的数据。运行速度稍慢 即时编译,约相当于C语言的1/20。相比点击鼠标进行操作,R仍能够大大提高效率。图2 R软件首页 / CRANThe Comprehensive R Archive Network简称CRAN,由世界几十个镜像网站组成网络,提供下载安装程序和相应软件包。各镜像更新频率一般为1-2天推荐镜像:中国的镜像:数学所/mirrors/CRAN/即时更新的CRAN源// R的核心开发

5、与维护小组通过R工程网站及时发布有关信息,包括R的简介、R的更新及宏包信息、R常用手册、已经出版的关于R的图书、R通讯和会议信息等。Windows下载和安装RCRAN: BinariesWindowsbase 下载完成后,双击R-2.11.0-win32.exe 开始安装。一直点击下一步,各选项默认,语言建议选英文。图3 R2.11.0下载页面R的运行平台 R_GUI 启动R,看到R GUI (graphic users interface)的主窗口, 由三部分组成:主菜单、工具条、 R console (R的运行窗口) R consoleR的运行平台 R console 主要工作是在这里通过

6、发布命令来完成的,包括数据集的建立,数据的分析,作图等. 在这里可以得到在线帮助help() 得到相应函数的帮助,例如help(plot)help.start() HTML格式的关于R的帮助文件demo() 得到R提供的几个示例; demo(fm)q() 退出R工具条介绍Source R code Load image Save imageCopy and PasteStop current computationSource R code 执行R文件(*.R或*.r)Save image 保存工作空间,文件名为*.RDataLoad image 打开已有的工作空间Stop current c

7、omputation 中止当前计算(由于超时等原因) (打开程序脚本打开程序脚本) (载入映象载入映象) (保存映象保存映象) (打印打印) (中断目前的计算中断目前的计算) 图 4 R登陆界面(Windows版)路径: 开始所有程序R 2.11.0菜单栏菜单栏快捷按钮快捷按钮控制台控制台光标光标:等待输入等待输入图 5 R Gui 的File菜单图 6 R Gui 的Edit菜单图 7 R Gui 的Packages菜单图 8 R Gui 的Help菜单R程序包(R Packages)程序包是什么?程序包是什么? R程序包是多个函数的集合,具有详细的说明和示例。 Window下的R程序包是经

8、过编译的zip包。每个程序包包含R函数、数据、帮助文件、描述文件等。为什么要安装程序包?为什么要安装程序包? R程序包是R功能扩展,特定的分析功能,需要用相应的程序包实现。 例如:系统发育分析,常用到ape程序包,群落生态学vegan包等。常用R程序包(I)ade4利用欧几里得方法进行生态学数据分析adephylo系统进化数据挖掘与比较方法ape系统发育与进化分析apTreeshape 进化树分析bootBootstrap检验cluster聚类分析ecodist生态学数据相异性分析FD功能多样性分析geiger物种形成速率与进化分析常用R程序包(II)Graphics绘图lattice栅格图m

9、aptools空间对象的读取和处理mefa生态学和生物地理学多元数据处理mgcv广义加性模型相关mvpart多变量分解nlme线性及非线性混合效应模型ouch系统发育比较pgirmess生态学数据分析phangorn系统发育分析常用R程序包(III)picante群落系统发育多样性分析raster栅格数据分析与处理seqinrDNA序列分析sp空间数据处理spatstat空间点格局分析,模型拟合与检验splancs空间与时空点格局分析statsR统计学包SDMTools物种分布模型工具vegan植物与植物群落的排序,生物多样性计算图 9 CRAN Task Views: 对程序包的分类介绍CR

10、AN Task Views图 10 vegan包页面三种平台上的程序包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文件,安装时不要解压缩。安装程序包的方法1 用函数 install.packages(),如果已经连接到互联网,在括号中输入要安装的程序包名称,选择镜

11、像后,程序将自动下载并安装程序包。例如: 要安装picante包,在控制台中输入 install.packages(picante)2 安装本地zip包路径:Packagesinstall packages from local files选择本地磁盘上存储zip包的文件夹。程序包使用程序包的中函数,都要先导入,再使用,因此导入程序包是第一步。在控制台中输入如下命令:library(vegan)library(ade4)程序包内的函数的用法与R内置的基本函数用法一样。library(vegan)This is vegan 1.17-2查看程序包帮助文件vegan 程序包内部都有哪些函数?分别有

12、什么功能?查询程序包内容最常用的方法:1 菜单 帮助Html帮助2 查看pdf帮助文档查看函数的帮助文件函数的默认值是什么?函数的默认值是什么? 怎么使用?怎么使用? 使用时需要注意什么问使用时需要注意什么问题?题? 需要查询函数的帮助。需要查询函数的帮助。1 ?t.test 2 RGuiHelpHtml help3 apropos(t.test)4 help(t.test)5 help.search(t.test)6 查看查看R包包pdf手册手册图 11 R帮助文件的内容与格式帮助文件的内容 lmstats #函数名及所在包 Fitting Linear Models #标题 Descrip

13、tion #函数描述 Usage #默认选项 Arguments #参数 Details #详情 Author(s) #作者 References #参考文献 Examples #举例R图形界面:R commanderR commander是R的图形界面之一,是John Fox教授编写的,适用于不希望R编程的用户。随着用户的操作,其窗口还可以显示出相应操作的R程序,对于初学者可能会有帮助。安装R commander install.packages(Rcmdr)R将自动下载并安装Rcmdr所需的所有程序包图形界面之一:R Commander图 12 R commander 界面 library

14、(Rcmdr) 界面操作代码结果输出为什么要学习编程? 界面操作直观易学,但也存在一些不足: (1)操作的过程难以保存,数据处理不够灵活,在进行步骤繁多的数据处理工作时十分费时费力; (2)在建立模型或自己编写函数时也会遇到困难。 而这些困难可以通过编程解决。 要学习R编程,首先要了解R的函数、对象及其操作。R通常缺省的安装目录为通常缺省的安装目录为C:Program FilesRR-X.X.X其中其中R-X.X.X为版本号,安装时可以改变目录。为版本号,安装时可以改变目录。1 查看当前R工作的空间目录getwd()2 将R工作的路径设置为 d:/data/setwd(“d:/data”) 或

15、者或者“文件文件”“改变当前目录改变当前目录”save.image(example.Rdata)load(example.Rdata)3 历史 history(Inf) 使用R,在任务结束时用q() 来中止。选择是否保存。 dos结束某一命令 R主页主页: CRAN (Comprehensive R Archive Network), CRAN的镜像站点的镜像站点 /mirrors.html UCLA提供的关于R与S-Plus的联接,具有搜索功能 h

16、ttp://splus/default.htm 李东风主页提供了的Windows版本 http:/ 如果使用FTP软件(如Cuteftp)则推荐使用(匿名访问)ftp.u-aizu.ac.jp 的网站资源 CRAN提供了许多便于统计分析的宏包:/src/contrib/PACKAGES.html stable - 稳妥(分布)广义回归分析 tseries 时间序列分析 VaR 风险值分析 matrix 矩阵运算 cinterface C与R的接口 foreign 读写由S, Minitab, SAS, S

17、PSS, Stata等软件的数据 normix 混合正态分布分析 nortest 正态分布的Anderson-Darling检验 MCMCpack 基于Gibbs抽样的MCMC抽样方法 fracdiff 分数差分模型的极大似然估计 还有很多统计分析软件包二、R的数据结构(1) R的对象与属性(2)向量的建立(3)矩阵与数组的建立(4)数据框的建立(5)列表的建立 ()时间序列的建立(1) R的对象与属性R通过一些对象来运行。所有的对象有两个内在属性:类型和长度。类型有四种:数值型、字符型、复数型、 逻辑型。可通过mode()和length()得到类型和长度。表 数据对象及类型对象类型是否允许同

18、一个对象中有多种类型向量数值型、字符型、复数型、逻辑型否因子数值型、字符型否数组数值型、字符型、复数型、逻辑型否矩阵数值型、字符型、复数型、逻辑型否数据框数值型、字符型、复数型、逻辑型是时间序列数值型、字符型、复数型、逻辑型否列表数值型、字符型、复数型、逻辑型,函数,表达式是如何为对象起名? R处理的所有数据、变量、函数和结果都以对象的形式保存。1. 区分大小区分大小写,注意China和china的不同。2. 不能用数字作为变量,对象也不能用数字开头,但是数字可以放在中间或结尾,如2result与与result2,后者是合法的。3. 建议不要用过短的名称。可以用”.”作为间隔,例如 anova

19、.result1。4. 不要使用保留名:NA, NaN, pi, LETTERS, letters, month.abb, 浏览对象的信息 函数ls( )的功能是显示所有内存中的对象,只列出对象名。如:name- “Carmen”; n1-10; mls( )ls(pat=“m”) #名称中带有字符mls(pat=“m” #限定名称中以字母m开头 rm(x) #删除对象x rm(list=ls() #删除内存中所有对象 rm(list=ls(pat=“m”) #删除内存中以m开头的对象(2)向量的建立 统计分析中最常用的是数值型的向量,建立函数:seq( )或“:” #若向

20、量具有较为简单的规律rep( ) #若向量具有较为复杂的规律c( ) #若向量没有什么规律scan( ) #通过键盘逐个输入例子1:101:10-11:(10-1)seq(1,30) #等价于 seq(from=1, to=30)seq(-5, 5, by=0.2)seq(1, 10, length=11) 序列一个相关的函数是rep(),这个函数可以用多种复杂的方法来复制一个对象。最简单的形式是 s5 rep(2:5,2) rep(1:3, times=4,each=2)scan() #通过键盘建立向量1:1 1.5 2 2.5 #此行末空格后回车10: #冒号后回车Read 3 items

21、 R命令将创建一个名为x: x - c(10.4, 5.6, 3.1, 6.4, 21.7)函数c()的作用是将参数中的数值向量以及向量的值首尾相接组成一个新的向量。 y c(“green”, “blue sky”, “-99”)逻辑型向量的建立 一个逻辑向量的值可以是TRUE, FALSE, NA.xtemp137!=6(7=9)&(70)数值型向量的运算数学运算 运算后给出数值结果+, -, *, /, (幂幂)比较运算 运算后给出判别结果(TRUE FALSE), , =, =, !=逻辑运算 与、或、非!, &, &, |, | v x1:10 #选取x的前10

22、个元素xc(1,4) #选取x的第1个和第4个元素yxx10 #值大于10的元素yz0) #x中非负非缺失值矩阵的创建生成矩阵的函数matrix(),对角阵常用对角阵常用diag( )建立:建立:matrix(data=,nrow=,ncol=,byrow=FALSE,dimnames=NULL)byrow表示数据给出的值是按列填充;dimnames给行和列命名。matrix.x matrix(1:6,2,3)mat-matrix(c(1,2,3,11,12,13),nrow=2,ncol=3,byrow=TRUE,dimnames=list(c(row1,row2),c(column1,co

23、lumn2,column3) colnames()和rownames()函数来修改行名和列名; matdimnames(mat) dim(mat) #计算矩阵的行列数计算矩阵的行列数xvdiag(v)矩阵下标与子集(元素)的提取xx2,2 #提取一个元素x2, #提取一行x,c(2,3) #提取若干列x-1, #去掉一行x,3xis.na(x)t() #转置diag() #提取对角元rbind(a,b) #按行合并cbind(a,b) #按列合并A*B #逐元乘积A%*%B #代数乘积det( ) #方阵的行列式数组的建立数组由函数array()建立,一般格式:array (data, dim

24、, dimnames)其中data是一个向量;dim是数组的维数向量; dimnames为各维的名称构成的向量。矩阵是数组的特例。AAAAx=c(42,7,64,9)y=1:4z.df=data.frame(INDEX=y, VALUE=x) 一个数据框还可以通过读取数据文件(文本文件、excel文件或其他统计软件的数据文件)建立。 通过函数read.table()读取文件适用于数据框的函数attach(Puromycin) #挂接数据集使之激活, Puromycin是R的内嵌数据集help(Puromycin) #显示前几行summary(Puromycin) #显示主要的描述统计量数据框的

25、下标与子集的提取Puromycin1,1 #提取单个元素Puromycinc(1,3,5),c(1,3) #提取一个子集Puromycinc(1,3,5), #提取第1,3,5行,所有列提取一列(变量的值):一个数据框的变量对应了数据框的一列,如果变量有名称,则可直接使用“数据框$变量名”这种格式指向对应的列Puromycin$conc #等价于Puromycin,1提取满足条件的子集:subset(Puromycin,state=“treated”&rate160)subset(Puromycin,concmean(conc)数据框中添加新变量如,在Puromycin中增加变量ico

26、nc,其定义为1/conc,则方法如下:Puromycin$ iconcPuromycin$ iconc Puromycinhead(Puromycin)(5)列表的建立列表是包含任何类型的对象。L1L2L2$xL21L21L212L2$x2L2$y4(6)时间序列的建立由函数ts()通过一向量或者矩阵创建一个一元或多元的时间序列,调用格式为:ts(data=NA, start=1, end=numeric(0),frequency=1, deltat=1, ts.eps=getOption(“ts.eps”),class,names)data 一个向量或矩阵;start 第一个观察值的时间;

27、end 最后一个观察值的时间;frequency 单位时间内观察值的频数;deltat 两个观测值间的时间间隔;(F与D给一个);ts.eps 序列之间的误差限,如果序列间的频率差异小于ts.eps,则认为此序列的频率相等;class 对象的类型;names 一个字符型向量,给出序列的名称ts(1:10,start=1959);ts(1:47,frequency=12,start=c(1959,2)ts(1:10,frequency=4,start=c(1959,2)ts(matrix(rpois(36,5),12,3),start=c(1961,1),frequency=12)数据的存储与读

28、取保存为文本文件的方法:setwd(“c:/data”)dwrite.table(d,file=“c:/data/foo.txt”,s=F, quote=F) # s=F表示行名不写入文件, quote=F表示变量名不放在双引号中。保存为逗号分隔的文本文件:write.csv(d,file=“c:/data/foo.txt”,s=F, quote=F) 保存为R格式文件:save(d,file=“c:/data/foo.Rdata”)在经过一段时间分析后,需将工作空间的映像保存起来,save.image()数据的读取文本文档数据的读取:read.

29、table(file=“文件名”)Read,fwf() 读取文件中固定宽度格式的数据Excel数据的读取:使用程序包RODBC.要得到文件“c:databody.xls”中工作表1(sheet1)中的数据,Library(RODBC)z-odbcConnectExcel(“c:databody.xls”)foo(.pachages()也可以用search()命令来显示结果。2、标准包中其他的程序包需要使用:library()或require()函数才能载人内存,如:library(grid)3、library(help=grid)可以了解更多grid的信息捐赠包: 捐赠包由一些项目发布,项目包

30、括CRAN,Bioconductor, OmegaHat等。 捐献包使用前需要用户自行下载安装和载人。 捐献包名称的完整列表及相关的描述可从CRAN网站上获得。1、#包的数目 nrow(available.packages() 或dim(available.packages() 1 或length(available.packages() ,1) 2、#包的名称 available.packages() 表 部分推荐包包的名称功能boot抽样和bootstraping方法class分类方法cluster聚类方法foreign读取各种格式(SPSS,SAS等)的外部数据KemSmooth核密度拟

31、合方法latticegrid图MASS包含很多有用的函数、工具和数据集mgcv广义的可加模型nlme线性和非线性混合效应模型nnet神经网络和多项对数线性模型rpart递归分割spatial空间分析survival生存分析(二)程序包的安装R程序包是以两种形式发布:源码包和编译包。两者都是压缩包文件;源码包文件扩展名为 .tar.gz, 编译码为 .zip;两种形式大多数包都可从CRAN网站下载,有时只可获得源码包,可用命令安装:install.packages(file_name_and_path, repos=NULL, type=“score”)其中file_name_and_path是

32、源代码的名称和路径。使用程序包的步骤:1、下载及安装程序包(放到硬盘);2、加载或调入程序包(放到内存)。程序包的安装步骤:1、选择软件库(软件库中保存着主要项目发布的程序包);2、设置镜像网站(大多数国家有CRAN镜像网站);3、安装程序包(将程序包文件放到硬盘)。联网方式安装R软件包1、点击“程序包”“选择软件库”2、点击“设置CRAN镜像”选择一个距离最近、速度最快、运行最稳定可靠的服务器,如中国用户可选择:Beijing1、Beijing2、Hong Kong、Xiamen之一即可。3、点击“安装程序包”非联网方式安装程序包1、用户需要通过各种非上网途径获得zip文件;2、点击“程序包

33、”“从本地zip文件安装程序包”。(三)程序包的操作函数函数名称功能library()列出当前可用(已安装)的程序包的名称library(abc)加载程序包“abc”require(abc)同上library(help=abc)查看关于程序包“abc”的文档search()列出已加载的R程序包和对象(.packages()显示当前已加载的所有R程序包名称.packages(all.available=TRUE)以字符型向量显示所有已装包的名称detach(“package:abc”)移出程序包“abc”installed.packages()列表显示目前已安装的程序包available.pac

34、kages()显示从一个或多个软件库中可以获得的程序包的名称,用于查看关于所有包的名称、版本、操作系统要求等的信息old.packages()显示软件库中所提供的当前已安装程序包的新版本。那些已安装的程序包目前有新版本?new.packages()显示软件库中所提供的当前尚未安装的程序包的名称。目前还有哪些程序包尚未安装?download.packages()将指定程序包的最新版本下载到指定文件夹。哪些已装包目前有新版本,以交互方式决定更新哪个包?update.packages()将已安装的程序包更新到最新版本install.packages()安装新的程序包remove.packages()

35、删除已安装的程序包并更新索引信息(四)程序包及其帮助 程序包是进行统计运算的基本部件,利用实际操作案例来应用。1、查看程序包car是否已加载;2、查看程序包car是否已安装;3、安装程序包car;4、加载程序包;5、是否有关于程序包car的帮助?6、查找关于Angell数据框的信息;7、查找关于scatterplot函数的功能;8、运行一段使用scatterplot函数的示例程序;9、移除car程序包;10、卸载car程序包;11、列出关于流行病学的程序包的名称;12、列出关于环境科学的程序包名称。1、查看程序包car是否已加载及安装用函数(.packages()检查内存是否已加载程序包car

36、;用函数.packages(all.available=TRUE)查看程序包car是否已安装;两种函数检查都未在内存中发现程序包car.注意:在安装程序包以前,建议首先把当前已安装的相关程序包全部升级到最新版本:方法一:update.packages()方法二:点击“程序包”“更新程序包”“确定”3、安装程序包car(1)从互联网安装方法一:install.packages(“car”,dependencies=TRUE)方法二:“程序包”“安装程序包”“car”确定。(2)从本地zip文件安装登陆:/CRANChinaPackagesTable

37、of available packages : sorted by name carWindows binaries: r-devel: car_2.0-25.zip保存在电脑(3)从本地zip文件安装程序包方法一:install.packages(“文件位置/文件名”)方法二:“程序包”“从本地”“选择car程序包的位置及程序包”“成功” 检查car的加载安装情况: (.packages()结果显示尚未加载。接着查看程序包car是否已安装: .packages(all.available=TRUE)4、加载程序包library(car) #加载car程序包 再检查是否被加载: (.packa

38、ges()5、是否有关于程序包car的帮助?library(help=car)得到有关程序包car的帮助信息。6、查找关于Angell数据框的信息 help(Angell) 结果没有帮助信息,因此此包并未调入或尚未安装。7、查找关于scatterplot函数的功能?scatterplot 该语句是查找关于scatterplot函数的帮助信息。由于scatterplot是car包中的函数。8、运行一段使用scatterplot函数的示例程序library(car)help(Prestige) #获取关于数据集Prestige的帮助信息scatterplot(prestigeincome|type

39、, data=Prestige, span=1, legend.coord=“topleft”, main=三个社会nprof-专业;bc-蓝;wc-白)9、移除car程序包detach(package:car)#将程序包car移出工作空间。10、卸载car程序包remove.packages(car) #卸载程序包car.libPaths() #查看程序包的位置,即已安装的程序包所在的文件夹dir(.libPaths() ) #显示程序包位置上的文件和目录11、列出关于流行病学的程序包的名称?epidem12、列出关于环境科学的程序包名称?pollution二、R函数(一)函数的调用与查询(

40、二)用户自定义函数(三)几种特殊的函数函数是具有各种特定功能的R对象。当R运行时,变量和数据经过函数加工处理而产生结果。函数是进行统计分析的核心部件。R系统中,函数分为若干类:数学函数、统计函数、绘图函数和日期函数等。(一)函数的调用与查询函数的调用基本形式:函数的调用基本形式:函数名(参数)(1)当不需向函数传递任何参数时,形式为:my_function( )把函数指定给一个对象,形式为:result-my_function( )(2)当需调用一个函数,按参数的名称来传递各种不同参数时,调用格式:result-my_function( arg_nameN=argN, arg_name1=ar

41、g1,,arg_name2=arg2)(3)当需调用一个函数,按参数的排列位置来来传递各种不同参数时,调用格式:resultset.seed(123) #给定产生随机数的种子(123),使每次产生的随机数相同xset.seed(123) yset.seedrnorm也可以用formals()、body()、environment()输出给定函数的以上三个部分的内容,如:(aaa(bbb (ccc args(rnorm) function (n, mean = 0, sd = 1) NULL(二)用户自定义函数R提供了丰富的函数,但全部满足需求是不可能的,自己写出函数,编写格式为:functio

42、n(arglist)exprreturn(value)function表示创建一个函数;arglist是形式参数组成的列表,其可以是一个符号,一个具有“symbol=expression”形式的语句;或者是一个特别形式参数“”。expr是一个或多个有效的R表达式,若是多个表达式组成,则需加花括号“”;value为要返回结果的表达式。若函数是以一个要返回的表达式结尾,则return命令不必写出。单参数的用户定义函数(1)打印参数值xechoecho(x=5)xecho(x)(2)定义一个计算立方数的函数fncube()fncubexfncube(x)具有多个参数的函数(1)函数计算(p-q)/q

43、dif-function(p,q)resultdif(p=7,q=5)(2)建立函数fnpower用于计算乘法fnpowerfnpower(5,3)(3)向函数传递任意个参数 my.foo my.foo(2,3,76,45,43,976,34)函数参数的默认值my.foomy.foo(4,3)my.foo(x=4,y=3)my.foo(y=3,x=4)my.foomy.foomy.foo(2,3,sin)将plot()函数作为参数传递给my.foo()my.foomy.foo(2:20,3,plot)(三)几种特殊的函数(1)统计函数:mydfsapply(mydf,c(1:3),mean)s

44、ummary()函数返回最大值、第一四分位数、中位数、均数、第三四分位数、最大值summary(mydf)表 常用的统计函数sum(x)对x中的元素求和prod(x)对x中的元素求连乘积max(x)X中元素的最大值min(x)X中元素的最小值wich.max(x)返回X中最大元素的下标wich.min(x)返回X中最小元素的下标range(x)X中元素的最小值和最大值length(x)X中元素的数目mean()X中元素的均值median(x)X中元素的中位数var(x) or cov(x)X中元素的方差,或协方差矩阵cor(x)相关系数矩阵var(x,y) or cov(x,y)X与y的协方差

45、cor(x,y)X与y的相关系数矩阵字符函数:1.paste()函数连接字符串:paste(a, b, c) paste(“a”, “b”, “c”,sep=“”) #字符串间无空格 myvec paste(myvec,sep=, collapse=)substring()提取字符串的一部分 mystr substring(mystr,7,11) 1 worldstrsplit()函数将一个字符串分割成单个字符 strsplit(mystr,) 1 1 H e l l o w o r l d用正则表达式分割字符串: strsplit(mystr, ) 1 1 Hello world“ strs

46、plit(mystr,s) 1 1 Hello world strsplit(mystr,“seo”) #删除e与o 1 1 Hello world 用regexpr()函数在字符串中查找指定的字符串,并返回找到的字符串所在的位置及长度: regexpr(e, mystr) 1 2 attr(,match.length) 1 1 attr(,useBytes) 1 TRUE sub()函数指定某个字符替换另一个字符,只替换第一个。 sub(l, +, mystr)1 He+lo world gsub()函数指定某个字符替换另一个字符,所有字符都替换。 gsub(l, +, mystr) 1 H

47、e+o wor+d日期函数 Sys.Date() #显示当前日期1 2015-05-12data() #显示当前日期和时间format(Sys.Date() ,format=“%d%B%Y”)#用格式输出日期%d 一个月的日(1-31)%a 短周的日%A 一周的星期几中文名%m 月份阿拉伯字表示(01-12)%b 月份阿拉伯名%B 月份中文名%y 2位数字的年%Y 4位数字的年三、 R绘图 R具有强大的绘图功能;R的图形绘制灵活多变,因为R有大量的绘图函数,且函数具有丰富灵活的选项。 任何绘图函数的结果直接输出到一个绘图设备上。 绘图设备包括绘图窗口和图形文件。绘图函数分两类:1、高级绘图函数

48、:在绘图设备上创建一个新图,对用户所指定的资料产生一个特定的图形。2、低级绘图函数:在现有的图中添加信息,如添加点、线、标签、图例和多边形等。绘图步骤:打开绘图的输出设备确定绘图区域选择图形绘出纵、横轴用数据绘制图形定义标题和纵、横坐标轴填充色彩定义图例和说明等。(1)管理绘图1、打开绘图设备绘图设备首选是绘图窗口。x11() #绘图窗口windows() #绘图窗口pdf() #用作绘图设备的文件均是打开一个绘图设备。显示包括所有已打开的设备的列表:dev.list() #显示的数字是设备的编号,数字越大,表示设备打开的越晚。dev.cur() #获取当前设备的名称和编号dev.set(2)

49、 #将当前窗口变换为windows(2)dev.off() #关闭当前设备dev.off(3) #关闭指定的设备 dev.cur() #当前设备是哪个dev.list() #当前有哪些绘图设备win.metafile() #该函数能将图形输出到文件;图形的记录功能:当绘图窗口被选定时,“历史”“记录”把全部图形记录下来;多个图形被记录下来后,可用pgup和pgdn来浏览;“历史”“消除历史”,R中清除除当前的绘图窗口,且关闭记录功能 若有一个绘图程序运行后,前面的图都被后面的图替换,只能看到最后产生的那个图;解决方法:首先执行plot.new(), 接着“历史”“记录”,切换到程序窗口,“编辑

50、”“运行所有代码”,程序运行完毕后切换到绘图窗口,可用pgup和pgdn来浏览所有图。图形大小的控制win.graph(width,height,pointsize) #控制图形的大小,宽度、高度、绘图正文中点(文字)的大小。win.graph(width=4,height=3.5,pointsize=8)版面分割 版面分割是把当前绘图设备分割为数个区域,每个区域可用单独绘图,常用的函数:split.screen()、par()、 layout() split.screen(c(1,2) #划分1行2列 1 1 2 screen(1) #激活第一个区域 plot(1:10) screen(2)

51、 plot(1:10,ylab=ylab3) screen(2) plot(10:1,ann=FALSE) par(mfrow=c(2,1) #分割为2行1列 plot(1:12) #绘制上方的图 plot(1:12,log=“y”) #绘制下方的图 par()对图的周边宽度进行控制: par(mfrow=c(x,y),mar=c(bottom,left,top,right) 图的周边宽度越宽,则图中央的绘图区域就越小。 作图设备分为三个区域:绘图区、图形区、外围区。 par(mar=c(4,4,1,0.5),bg=yellow) #设置边距参数和背景色 plot(1:12,log=y)lay

52、out(matrix()函数是利用矩阵来定义绘图的版面;layout(matrix(1:6,3,2),c(1,1),c(1,1,1) #分为3*2=6个区 layout(matrix(1:6,3,2) #同上 layout.show(6) #画出1-6号区域内的编号plot(x,y,)函数可绘制散点图、线图等.参数说明见下表:x图中各观察点的x坐标轴,即数据集中作为x轴的变量各观察点的值y图中各观察点的y坐标轴,即数据集中作为y轴的变量各观察点的值传输给各种方法的一些参数type图形的样式类型:用于指定要绘制何种样式的图形,可能的样式有:“p”散点“l”线“b”点和线“c”折线,即保留”b”中

53、的线部分“o”线穿过点的图形“h”由垂直线组成的“直方图”“s”阶梯“S”其他阶梯“n”不画图main/sub 图的主标题/副标题xlab/ylab x轴/y轴的标签aspy/x(轴长)之比 x=c(1:5,5:1) par(mfrow=c(3,3),mar=c(2,2.5,3,2) plot(x,type=p,main=type=p,xlab=) plot(x,type=l,main=type=l,xlab=) plot(x,type=b,main=type=b,xlab=) plot(x,type=c,main=type=c,xlab=) plot(x,type=o,main=type=o

54、,xlab=) plot(x,type=h,main=type=h,xlab=) plot(x,type=s,main=type=s,xlab=) plot(x,type=S,main=type=S,xlab=) plot(x,type=n,main=type=n,xlab=)women是R内存集: attach(women) women win.graph(width=4,height=3.5,pointsize=8) plot(women$height,women$weight,type=p,main=用women数据绘制的散点图,xlab=身高(英寸),ylab=体重(磅) 在plot(

55、x)中,如果x所代表的是一个数据框或矩阵,则plot(x)将对参数x所代表的数据集中的每两个变量绘制散点图。 由于women中只有两个变量,顾plot(women)只画一个图,且与上图一样。 plot(weight,height) attach(mtcars) mtcars plot(wt,mpg,pch=19,main=轿车重量(wt)与每加仑油所跑英里数的散点图,xlab=轿车重量,ylab=每加仑汽油所跑的英里数)barplot()函数的用法1、简单条形图 dat=VADeaths colnames(dat)=c(农村男性,农村女性,城市男性,城市女性) dat is(dat) barp

56、lot(dat,1,beside=TRUE,main=某地农村男性年龄组死亡率)2、绘制分组条形图 绘制同一地区不同性别居民的年龄分组条形图: barplot(dat,c(1,2),legend=rownames(dat),main=某地农村居民分性别年龄组死亡率,beside=TRUE,args.legend=list(x=topleft) barplot(t(dat,c(1,2),legend=colnames(dat)1:2,main=某地农村居民分性别年龄组死,beside=TRUE,args.legend=list(x=topleft) 绘制不同地区同性别居民的年龄分组条形图: ba

57、rplot(dat,c(1,3),legend=rownames(dat),main=某地农村与城市男性居民年龄组死亡率,beside=TRUE,args.legend=list(x=topleft) barplot(t(dat,c(2,4),legend=colnames(dat)c(2,4),main=某地农村与城市女性居民年龄组死亡率,beside=TRUE,args.legend=list(x=topleft) barplot(dat,legend=rownames(dat),main=某地居民死亡率,beside=TRUE,args.legend=list(x=topright) b

58、arplot(t(dat),legend=colnames(dat),main=某地居民死亡率,beside=TRUE,args.legend=list(x=topleft) barplot(dat,legend=rownames(dat),main=某地居民死亡率)barplot(t(dat),legend=colnames(dat),main=某地居民死亡率,args.legend=list(x=topleft) barplot(dat,c(3,4),legend=rownames(dat),main=“某地城市居民死亡率)barplot(t(dat),legend=colnames(da

59、t),main=某地居民死亡率,args.legend=list(x=topleft)barplot2()函数绘制均数标准差图: hh sd.l sd.u lblslibrary(gplots) mpmtext(side=1,at=colMeans(mp),line=2,cex=.8,text=paste(均数=,formatC(colMeans(hh),col=red) box()pie()函数绘制被分割成若干个扇形饼图 head(mtcars) tail(mtcars) pie(unique(mtcars$cyl),labels=unique(mtcars$cyl),main=气缸饼图)

60、table(mtcars$cyl) dim(mtcars)1 percent.cyl n.cyl lbls=paste(n.cyl, 个气缸,percent.cyl,%,seq=) pie(n.cyl,label=lbls,main=气缸数目饼图,col=rainbow(length(lbls)立体饼图library(plotrix) #加载n.cylpercent.cyllbls=paste(n.cyl, 缸n, percent.cyl,%,seq=) pie3D(n.cyl,labels=lbls,main=气缸数目饼图,col=rainbow(length(lbls)hist()函数绘制直方图 set.seed(1) x=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论