R语言编程规范指南规范和使用手册.docx

上传人:夺命阿水 文档编号:472782 上传时间:2023-07-18 格式:DOCX 页数:29 大小:95.54KB
返回 下载 相关 举报
R语言编程规范指南规范和使用手册.docx_第1页
第1页 / 共29页
R语言编程规范指南规范和使用手册.docx_第2页
第2页 / 共29页
R语言编程规范指南规范和使用手册.docx_第3页
第3页 / 共29页
R语言编程规范指南规范和使用手册.docx_第4页
第4页 / 共29页
R语言编程规范指南规范和使用手册.docx_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《R语言编程规范指南规范和使用手册.docx》由会员分享,可在线阅读,更多相关《R语言编程规范指南规范和使用手册.docx(29页珍藏版)》请在课桌文档上搜索。

1、R语言编程指南与使用手册R语言编程指南与使用手册在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(AsystemfordataanalysisandvisualizationwhichisbuiltbasedonSlanguage.)R的源起R是S语言的一种实现。S语言是由AT&T贝尔实验室开辟的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUSoS-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来AUCkland大学的RobertGentleman和RossIhaka及其他志愿人员开辟了一

2、个R系统。R的使用与S-PLUS有不少类似之处,两个软件有一定的兼容性。RisfreeR是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能特别强大);完整联贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可控制数据的输入和输入,可实现分支、循环,用户可自定义功能。R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的,在那儿可以下载到R

3、的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。R的特点(1)有效的数据处理和保存机制。(2)拥有一整套数组和矩阵的操作运算符。(3)一系列联贯而又完整的数据分析中间工具。(4)图形统计可以对数据直接进行分析和显示,可用于多种图形设备。(5) 一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。(6) R语言是彻底面向对象的统计编程语言。(7) R语言和其它编程语言、数据库之间有很好的接口。(8) R语言是自由软件,可以放心斗胆地使用,但其功能却不比任何其它同类软件差。(9) R语言具有

4、丰富的网上资源入门训练1 .获取匡助 help.start()开启匡助文档 help(solve)显示某命令的匡助信息,或者 7solve对于由特殊字符指定的功能,这些参数必须用单引号或者双引号括起来,使之成为一个字符串,如 help()与某个主题相关的例子通常可以用下面的命令得到 example(topic)2 .命令简介R对大小写是敏感的;名称不能以数字开始;基本的命令由表达式或者赋值语句组成。如果一个表达式被作为一条命令给出,它将被求值、打印而表达式的值并不被保存。一个赋值语句同样对表达式求值之后把表达式的值传给一个变量,无非并不会自动的被打印出来;命令由分号(;)来分隔,或者另起新行;

5、基本命令可以由花括号(f和g)合并为一组复合表达式;注释几乎可以被放在任何地方,只要是以井号(#)开始,到行末结束;如果一个命令在行莫仍没有结束,R将会给出一个不同的提示符,默认的是、3 .命令文件的执行和输出转向到文件如果命令存储于一个外部文件中,比如工作目录work中的commands.R,他们可以随时在R的任务中被执行 SoUrce(commandsR”)在Windows中Source也可以由File菜单执行。函数sink., sink(record.lis)将把所有后续的输出由终端转向一个外部文件,record.liso命令 sink()将把信息重新恢复到终端上。4 .数据的保持与对象

6、的清除R所创建、操作的实体是对象。对象可以是变量、数组、字符串、函数以及由这些元素组成的其它结构; objects()用来显示目前存储在R中的对象的名字。而当前存储的所有对象的组合被称为workspace;清除对象可以使用rm命令: rm(x,yzz,ink,junk,temp,foo,bar)所有在一个R任务中被创建的对象都可以在文件中被永久保存,并在其它的R任务中被使用。在每一个R任务结束时用户都有机会保存当前有效的所有对象。如果用户这样做的话对象将被写入当前目录一个名为.RData.当R被再次启动时R会从这个文件中再载入workspace同时相关的命令记录也被载入。所以,推荐大家在用R进

7、行不同的分析时分别使用不同的工作目录。5 .基本数据结构数值型(numeric)1,1.2,3.1415926l+2i复数型(COmPIeX)A/helloworld! X assign(x,c(10.4z5.6z3.1,6.4,21.7)也可以写成: C(10.4,5.6,3.1,6.4,21.7)-X如果一个表达式被当做一个完整的命令,它的值将被打印到终端但不被储存。单独输入X则会将值打印出来。也可以打印倒数: 1/x yVs5temp13逻辑操作符包括,,=,彻底相等=和不等于!=,与或者非分别为&,I,L在普通运算中,FALSE当做0而TRUE当做Io2.5 缺失值NA(notavai

8、lable):普通来讲一个NA的任何操作都将返回NAoisna(x)返回一个与X等长的逻辑向量,并且由相应位置的元素是否是NA来决定这个逻辑向量相应位置的元素是TRUE还是FALSEoX=NA是一个与X具有相同长度而其所有元素都是NA的向量。NaN(NotaNumber):由数值运算产生,如00zInf-Inf.is.na(x)对于NA和NaN值都返回TRUE,is.nan(x)只对NaN值返恒ITRUE。2.6 字符向量字符串在输入时可以使用单引号(D或者双以号(”);在打印时用双引号(有时不用引号)。R使用与C语言风格基本相同的转义符,所以输入打印的也是,输入打印引号,n:换行,t:tab

9、,b:回格。字符向量可以通过函数c()连接:PaSte()可以接受任意个参数,并从它们中逐个取出字符并连成字符串,形成的字符串的个数与参数中最长字符串的长度相同。如果参数中包含数字的话,数字将被强制转化为字符串。在默认情况下,参数中的各字符串是被一个空格分隔的,无非通过参数Sep=String用户可以把它更改为其他字符串,包括空字符串。例如:labs V (x+l)(!is.na(X)&x0-Z表示创建一个对象z,其中的元素由向量x+1中与X中的非缺失值和正数对应的向量组成。2 .正整数的向量 x6)是X的第六个元素 xl:10选取了X的前10个元素(假设X的长度不小于10)O c(,x,z,

10、y)rep(c(lz2z2,l),times=4)产生了一个字符向量,长度为16,由“X”,,y,y,重复4次而组成。3 .负整数的向量y fruitnames(fruit) lunch xis.na(x) yy0-yy y-abs(y)三对象,模式和属性3.1 固有属性:模式和长度对象是R所进行操作的实体,对象可以是向量、列表等,详见1.6.对象的模式包括numeri,ccomplex,character,logical,list,function,expression等。可以用mode(object)查看。对象的长度是对象的另一固有属性。可以用Iength(object)查看。attrib

11、ute(object)可以查看更深入的属性。模式的转换在允许的情况下(大多数情况都是允许的),R可以完成各种模式的转换。例如:d-ascharacter(z),将数值向量z e-numeric()产生一个numeric型的空向量eCharaCter()等类似。此时长度为对象Oo此时新添加一个元素会使e的长度自动调整, e3 alphaattr(z,ndim)-C(IO,10)另R将Z作为一个10X10的矩阵看待。3.4 对象的类别对象的一个特殊属性,类别,被用来指定对象在R编程中的风格。比如:如果对象类别,data.frame则会以特定方式处理。UnClaSS()可以去除对象的类别。SUmma

12、rV()可以查看对象的基本信息(min,max,mean,etc.)四有序因子和无序因子因子是一种向量对象,它给自己的组件指定了一个离散的分类(分组),它的组件由其他等长的向量组成。R提供了有序因子和无序因子。通俗点说,因子就是将对象的值分成不同的组(levels)。用函数factor()创建一个因子,levels按序罗列(字母序或者数值序)。例如PrOVince pf Pf打印出来1四川湖南江苏四川四川四川湖南江苏湖南江苏1.evels:湖南江苏四川函数levels()可以用来观察因子中有多少不同的IeVeISo假如我们拥有这些省份考生的分数: score smeans smeans湖南江苏

13、四川85.6666791.0000087.50000再例如,下面命令会给出各组的length tapply(score,pfzlength)湖南江苏四川334函数Ordered()可以创建有序因子ordered(province)1四川湖南江苏四川四川四川湖南江苏湖南江苏1.evels:湖南江苏 dim(z) array(1:20,dim=c(4,5) matrix(1:24,3,4)数据向量中的值被赋给数组中的值时,将遵循与FORTRAN相同的原则”主列顺序”,即第一个下标变化的最快,最后的下标变化最慢。数组的运算数组可以在算数表达式中使用,结果也是一个数组,这个数组由数据向量逐个元素的运算

14、后组成,通常参预运算的对象应当具有相同的dim属性。5.2 数组的索引和数组的子块数组中的单个元素可以通过下标来指定,下标由逗号分隔,写在括号内。我们可以通过在下标的位置给出一个索引向量来指定一个数组的子块,无非如果在任何一个索引位置上给出空的索引向量,则相当于选取了这个下标的全部范围。如a(2zz,a,3等5.3 索引数组除了索引向量,还可以使用索引数组来指定数组的某些元素。例如:有4X5的数组a,若要得到a中的alz3za2z2和a3,l这三个元素,可以生成索引向量L然后用ai得到它们。 a i iIzDz2lz132,223,31 ai1 963ai ab ab-outer(a,b,*u

15、)其中的乘法操作可以由任意一个双变量的函数替代。广义转置:函数t(八),或者aperm(A,c(2,1);获取行数/列数:nr。W(八)和nc。I(八)分别返回矩阵A的行数和列数。矩阵乘法:操作符为*%;交叉乘积(crossproduct):Crossprod(X,Y)等同于t(X)%*%y,crossprod(X)等价于crossprod(X,X);diag(v):如果v是向量,diag(v)返回一个由V的元素为对角元素的对角矩阵。如果V为矩阵,diag(V)返回一个由V主对角元素组成的向量。如果V只是一个数值,那末diag(V)是一个VXV的单位矩阵。特征值和特征向量:eigen(Sm)O

16、这个函数的结果是由名为values和vectors的两部分组成的列表。如果只是需要特征值:eigen(Sm)$ValUeS最小二乘拟合即QR分解:1Sfit(),qr(),强制转换为向量:as.vector(),或者直接c()解线性方程和求矩阵的逆,奇妙值分解叼行列式见;六列表和数据帧6.1 列表列表是由称作组件的有序对象集合构成的对象。组件的模式或者类型不一定相同。形如LStLst 可以通过指定额外组件的方式。例如 1.st5 list.ABCtattach(t)这样可以直接引用数据帧内的元素,而无需前提是数据帧外没有同名的变量(如name)。挂接后若要对数据帧元素进行赋值操作,仍需用否则视

17、为赋值给数据帧外的元素。赋值后必须要先卸载(detach)再重新挂接后,新值才可见。detach(t)attach。是具有普通性的函数,即它不仅能够将目录和数据帧挂接在搜索路径匕还能挂接其他类别的对象。特殊是模式为“list”的对象可以通过相同的方式挂接:attach(any.old.list)任何被挂接的对象都可以用detach来卸载,通过指定位置编号或者指定名称这样的方式.搜索路径函数SearCh()将显示目前的搜索路径,可以用来查看数据帧/列表的挂接状态。ls()(或者。bjects()命令可以用来检查搜索路径任意位置上的内容。如:ls()zIS,ls(t)R可以在搜索路径中包含至多20

18、个项目,列表和数据帧只能在位置2或者更靠后的位置上挂接。数据帧使用惯例1将每一个独立的,适当定义的问题所包含的所有变量收入同一个数据帧中,并赋予合适的、易理解、易辨识的名称;2处理问题时,当相应的数据帧挂接于位置2,同时在第1层工作目录下存放操作的数值和暂时变量;3在结束一次工作之前,将你认为对将来有参考价值的变量通过$标记的形式添加到数据帧里面,然后detach();4最后,将工作目录下所有不需要的变量剔除,并且尽量将剩下多余的暂时变量都清除干净。这样我们可以很简单的在同一个目录下处理多个问题,而且对每一个问题都可以使用x,y,z这样的变量名。七从文件中读取数据7.1 函数read.tabl

19、e()该函数可以直接将文件中完整的数据帧读入。此时文件要符合特定的格式:1第一行应当提供数据帧中每一个变量的名称;2每一行(除变量名称行)应包含一个行标号和各变量的值。3若没有表头(变量名称行),也没有行标号,惟独变量值,则默认变量名称为“4若有表头,但没有行标号,则可以指定参数header=TRUE.7.2 函数scan()该函数从键盘或者文件中读取数据,并存入向量或者列表中。inp data()#获得基本系统提供的数据集列表,然后通过形如 data(infert)#来载入名为infert的数据集从其他package中载入数据集data(ackage=nnls)#查看nls中数据集data(

20、PuromycinzPaCkage=nls)#读取nls中Puromycin数据集。用Iibrary()挂接PaCkage后,它的数据集也自动包含到搜索路径中了。library(nls)#载入packagenlsdata()#查看数据集date(Puromycin)#载入Puromycin数据集7.4 编辑数据在使用一个数据帧或者矩阵时,edit提供一个独立的工作表式编辑环境。XneW xnew - edit(data. frame ()#可以通过工作表界面录入新数据。Chi-SqIMir(H(if,nep(fcXpoiieiitialexprate.FfifLtin.MPgainiiiaan

21、nmshaMscale朕巴W溺就用于直接修改也有的对聚y峰价于x布l11nlegisticIogis自通|即是一个统计表编春4略海)Iioniial)nin,n.kIllCHlllog,NkgIOeatiUu.ScakIibinomsize,probmean.蹙1PoissonpoisIninbdaStiideiitSttdf.tp而盘勒;一套完整的貂睛集合。林翻息权积累分布函数P(X=x),概率密度函数,分忧国做四寸给定的q,战满岫1P(X2*pt(-2.43zdf=13)#upper1%pointforanF(2,7)distributionqf(0.99z2,7)8.2 检测数据集的分布

22、函数summary和fivenum这两个函数可以给出摘要,后者只给出数值;函数stem可以将数值统计结果以类似直方图的方式显示出来;函数hist()可以绘制直方图;函数density和line可以获得更漂亮的密度图;功能包fun中的ecdf函数能绘制经验积累分布函数;还可以进行拟合正态分布,覆盖拟合CDF;还可以绘制QUantiIe-quantile(Q-Q)图有助于我们更细致的检测其分布形态;8.3 单样本和两样本检验(略读)九语句组、循环和条件操作R是一种表达式语言,也就是说其命令类型惟独函数或者表达式,并由它们返回一个结果。语句组由花括号,确定,此时结果是该组中最后一个能返回值的语句的结

23、果。条件语句 if(expr_l)expr_2elseexpr_3其中条件表达式exprl必须返回一个逻辑值,操作符&和II时常被用于条件部份。&和I与&,II的区别在于,&和I按照逐个元素的方式进行计算,&和II对向量的第一个元素进行运算,惟独在必需的时候才对第二个参数求值。if/else结构的向量版本是函数ifelse,其形式为ifelse(condition,arb),产生函数结果的规则是:如果conditioni为真,对应ai元素;反之对应的是bi元素。根据这个原则函数返回一个由a,b中相应元素组成的向量,向量长度与其最长的参数等长。循环语句 for(nameinexpr_l)expr

24、_2其中name是循环变量,exprl是一个向量表达式(通常是1:20这样的序列),而expr2时常是一个表达式语句组,expr2随着name挨次取exrl结果向量的值而被多次重复运行。 repeat(exr) while(condition)exprbreak语句可以用来中断任何循环,可能是非正常的中断。而且这是中止repeat循环的惟一方式。next语句可以中止一个特定的循环,跳至下一个.十编写自己的函数10.1 函数的定义name%!% funl ans ans ans funl ans ans-funl(d,df,Iimit=IO)此时改变了一个默认值。NOTE:参数可以是任意表达式,

25、甚至可以是包含其他参数的表达式;10.4 额外参数”.”当需要将一个函数的参数传递给另一个函数时,可以通过包含一个额外的参数实现。funl-function(data,data.frame,graph=TRUE,limit=20,.)omittedstatementsif(graph)par(pch=,*z.)moreomissions10.5 全局变量和局部变量函数内的赋值都是局部变量,退出函数就丢失了。如果要在函数内进行永久赋值(定义全局变量),需要用到超赋值操作符,-或者函数assign()。10.6 一些高级示例区组设计的效率因子(Eciencyfactors)删除打印数组中的所有名称

26、递归的数值积分10.7 范畴(SCOPe)函数主体内浮现的标识(SymbOI)可以被分为3类;正式参数、局部变量和自由变量。正式参数就是浮现在函数参数列表中的参数,他们的值由实际的函数参数与正式参数的绑定(binding)过程决定。局部变量是在参数主体中,由表达式求值过程决定的变量。自由变量为既不是正式参数又不是局部变量的变量。赋值之后自由变量成为局部变量。在R中,自由变量的值由函数被创建的环境中与其同名的第一个变量值决定(我理解为最近的同名变量),这种方式被称为词汇式范畴(IeXiCalscope)o而在S中,该值由同名的全局变量决定。例如下面的函数cube,在R中cube(2)=8,在S中报错为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号