版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章程序逻辑结构函数判断循环创建自己的R语言程序目录函数是一个组织在一起的一组以执行特定任务的语句。R语言有大量的内置函数,用户也可以创建自己的函数。函数PART01WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.1.1使用已存在的函数一、数据管理类函数函数名函数描述vector:向量numeric:数值型向量logical:逻辑型向量character;字符型向量list:列表data.frame:数据框c:连接为向量或列表length:求长度subset:求子集seq,from:to,sequence:等差序列rep:重复NA:缺失值NULL:空对象sort,order,unique,rev:排序unlist:展平列表attr,attributes:对象属性mode,typeof:对象存储模式与类型names:对象的名字属性表数据结构的相关函数二、字符串处理character:字符型向量nchar:字符数substr:取子串format,formatC:把对象用格式转换为字符串paste,strsplit:连接或拆分charmatch,pmatch:字符串匹配grep,sub,gsub:模式匹配与替换三、复数complex,Re,Im,Mod,Arg,Conj:复数函数四、因子factor:因子codes:因子的编码levels:因子的各水平的名字nlevels:因子的水平个数cut:把数值型对象分区间转换为因子table:交叉频数表split:按因子分组aggregate:计算各数据子集的概括统计量tapply:对“不规则”数组应用函数数学相关计算函数一、计算函数名函数描述+,-,*,/,^,%%,%/%:四则运算ceiling,floor,round,signif,trunc,zapsmall:舍入max,min,pmax,pmin:最大最小值range:最大值和最小值sum,prod:向量元素和积cumsum,cumprod,cummax,cummin:累加、累乘sort:排序approx和approxfun:插值diff:差分sign:符号函数二、数学函数abs,sqrt:绝对值,平方根log,exp,log10,log2:对数与指数函数sin,cos,tan,asin,acos,atan,atan2:三角函数sinh,cosh,tanh,asinh,acosh,atanh:双曲函数beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数fft,mvfft,convolve:富利叶变换及卷积polyroot:多项式求根poly:正交多项式spline,splinefun:样条差值besselI,besselK,besselJ,besselY,gammaCody:Bessel函数deriv:简单表达式的符号微分或算法微分三、数组Array:建立数组matrix:生成矩阵data.matrix:把数据框转换为数值型矩阵lower.tri:矩阵的下三角部分mat.or.vec:生成矩阵或向量t:矩阵转置cbind:把列合并为矩阵rbind:把行合并为矩阵diag:矩阵对角元素向量或生成对角矩阵aperm:数组转置nrow,ncol:计算数组的行数和列数dim:对象的维向量dimnames:对象的维名row/colnames:行名或列名%*%:矩阵乘法crossprod:矩阵交叉乘积(内积)outer:数组外积kronecker:数组的Kronecker积apply:对数组的某些维应用函数tapply:对“不规则”数组应用函数sweep:计算数组的概括统计量aggregate:计算数据子集的概括统计量scale:矩阵标准化matplot:对矩阵各列绘图cor:相关阵或协差阵Contrast:对照矩阵row:矩阵的行下标集col:求列下标集四、线性代数solve:解线性方程组或求逆eigen:矩阵的特征值分解svd:矩阵的奇异值分解backsolve:解上三角或下三角方程组chol:Choleski分解qr:矩阵的QR分解chol2inv:由Choleski分解求逆五、逻辑运算<,>,<=,>=,==,!=:比较运算符!,&,&&,|,||,xor():逻辑运算符logical:生成逻辑向量all,any:逻辑向量都为真或存在真ifelse():二者择一match,%in%:查找unique:找出互不相同的元素which:找到真值下标集合duplicated:找到重复元素六、优化及求根optimize,uniroot,polyroot:一维优化与求根程序设计类函数一、控制结构函数名函数描述if,else,ifelse,switch:分支for,while,repeat,break,next:循环apply,lapply,sapply,tapply,sweep:替代循环的函数。二、函数方面function:函数定义source:调用文件call:函数调用.C,Fortran:调用C或者Fortran子程序的动态链接库Recall:递归调用browser,debug,trace,traceback:程序调试options:指定系统参数missing:判断虚参是否有对应实参nargs:参数个数stop:终止函数执行on.exit:指定退出时执行eval,expression:表达式计算system.time:表达式计算计时invisible:使变量不显示menu:选择菜单(字符列表菜单)三、输入输出cat,print:显示对象sink:输出转向到指定文件dump,save,dput,write:输出对象can,read.table,load,dget:读入四、工作环境ls,objects:显示对象列表rm,remove:删除对象q,quit:退出系统First,.Last:初始运行函数与退出运行函数。options:系统选项?,help,help.start,apropos:帮助功能data:列出数据集函数名函数描述norm:正态t:t分布f:F分布chisq:卡方(包括非中心)unif:均匀exp:指数weibull:威布尔gamma:伽玛beta:贝塔lnorm:对数正态logis:逻辑分布cauchy:柯西binom:二项分布geom:几何分布hyper:超几何nbinom:负二项pois:泊松signrank:符号秩,wilcox:秩和tukey:学生化极差统计分布函数多元分析函数函数名函数描述cor,cov.wt,var:协方差阵及相关阵计算biplot,biplot.princomp:多元数据biplot图cancor:典则相关princomp:主成分分析hclust:谱系聚类kmeans:k-均值聚类cmdscale:经典多维标度函数名函数描述ts:时间序列对象diff:计算差分time:时间序列的采样时间window:时间窗时间序列函数统计模型函数函数名函数描述lm线性模型glm广义线性模型aov方差分析网络浏览类函数和文件操作函数网络浏览类函数函数名函数描述browseURL:浏览某个指定的网页download.file:下载网络文件到本地文件操作函数名函数描述dir.create:新建一个文件夹list.dirs:显示目录下的文件夹list.files:显示目录下的文档file.create:文档创建file.exists:判断文档是否存在file.remove:文档删除file.rename:重命名file.append:文档添加file.copy:文档复制file.symlink(from,to)
file.show:显示文档内容:显示文档信息file.edit:编辑文档zip:压缩文件unzip:解压缩文件WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.1.2自定义函数函数定义使用function关键字,一般格式为函数名<-function(形式参数表)函数体函数体是一个表达式或复合表达式(复合语句),以复合表达式中最后一个表达式为返回值,也可以用return(x)返回x的值。如果函数需要返回多个结果,可以打包在一个列表(list)中返回。形式参数表相当于函数自变量,可以是空的,形式参数可以有缺省值,R的函数在调用时都可以用“形式参数名=实际参数”的格式输入自变量值。一个自定义R函数由三个部分组成:• 函数体body(),即要函数定义内部要执行的代码;• formals(),即函数的形式参数表以及可能存在的缺省值;• environment(),是函数定义时所处的环境,这会影响到参数表中缺省值与函数体中非局部变量的的查找。判断PART02WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.2.1if和else语句if条件语句仅在满足条件表达式时执行。条件表达式运算符(比较运算符)有>=,>,<=,<,==(是否等于),!=(不相等)。if语句的语法形式是:if(条件)表达式1注意if后面的表达式的必须有小括号()。其中的“条件”为一个标量的真或假值,不允许取缺失值,表达式可以是用大括号包围的复合表达式。如if(is.na(lambda))lambda<-0.5WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.2.2ifelse函数R语言讲究简洁,ifelse是if-else语句的紧凑方式,输出是向量。语法形式:
ifelse(cond,表达式1,表达式2)函数ifelse()可以根据一个逻辑向量中的多个条件,分别选择不同结果。函数ifelse(test,yes,no)中的test是逻辑向量,yes和no是向量,test、yes和no的配合符合向量化原则,如果有长度为1的或者长度较短但其倍数等于最长一个的长度的,短的一个自动从头循环使用。不同于if语句,ifelse的test中运行有缺失值,对应结果也是缺失值。dplyr包的case_when函数可以看成是ifelse的多分支推广,或看成`if-elseif-else语句的向量化。可以设定多个向量化的分支,每个分支有对应的输出值。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.2.3switch语句switch语句根据条件表达式的多个值选择一个语句执行。语法形式:
switch(cond,表达式1,表达式2,...,表达式n)注意表达式间的","不能省略。switch语句输出的是根据cond选择的表达式的值。例:根据班级活动中同学当时的情绪反映mood,班干部应控制形势,使活动健康活泼又有秩序地进行下去>mood=c("sad")>res=switch(mood,+pleased="Iamgladyouarepleased",#字符串应有双引号“”+afraid="thereisonly'fear'worditself",+sad="cheerup",+angry="calmdownnow"+)>res[1]"cheerup"循环PART03循环语句的功能是重复执行一个语句集合,重复执行的原因是,(1)输入数据有多个独立的元素,每次循环执行一次循环(2)循环语句是迭代计算方式。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.3.1for循环为了对向量每个元素、矩阵每行、矩阵每列循环处理,语法为for(循环变量iin序列d){语句}其中的语句一般是复合语句。如果需要对某个向量x按照下标循环,获得所有下标序列的标准写法是seq_along(x),而不用1:n的写法,因为在特殊情况下n可能等于零,这会导致错误下标,而seq_along(x)在x长度为零时返回零长度的下标。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.使用for循环的注意事项: 如果对向量每个元素遍历并保存结果,应在循环之前先将结果变量产生等长的存储,在循环内为已经分配好存储空间的输出向量的元素赋值。为了产生长度为n的数值型向量,用numeric(n);为了产生长度为n的列表,用vector("list",n)。 对一个向量元素遍历时如果用下标访问,需要用seq_along(x)的做法而不是1:length(x)的做法。 如果直接对向量元素遍历,这有可能会丢失向量的属性(如日期型),用下标访问则不存在此问题。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGN8.3.2while循环while语句在输入数据符合条件表达式时,执行语句体,否则跳出循环继续执行程序的下一条语句。语法形式:while(条件表达式){......}进行当型循环。其中的语句一般是复合语句。仅当条件成立时才继续循环,而且如果第一次条件就已经不成立就一次也不执行循环内的语句。当while语句的条件表达式=TRUE时,只有用break语句跳出循环。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.3.3repeat循环
repeat语句没有逻辑判断跳出条件,因此必须应用break语句。
语法形式:
repeat{......if(cond)break}直到型循环至少执行一次,每次先执行...代表的循环体语句,然后判断是否满足循环退出条件,满足条件就退出循环。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.3.4
break跳出循环break语句跳出循环。实例原始数据框df2的格式与表8.1相同,则通过初步奖学金认定的人数为for(iin1:2017)for(jin2:6)if(df2[i,j]<60){cat(‘学生姓名’,df2[i,1],’不能参加奖学金评选’)break}8.3.5
next跳过该循环
next语句的功能与C语言的continue一样。跳过本次循环其他部分,到下一次循环开始执行。创建自己的R语言程序PART04通常,我们可以通过在脚本文件中编写程序来执行编程,然后在命令提示符下使用R解释器(称为Rscript)来执行这些脚本。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.4.1
Source与RScript有些时候如果将所有代码都写到一个文件之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮业成本控制与预算管理指南(标准版)
- 餐饮食品安全管理与操作手册
- 城市道路施工质量验收制度
- 成品仓库管理制度
- 采购档案管理与保密制度
- 办公室网络安全教育与培训制度
- 养老院老人健康监测人员社会保险制度
- 南阳市第六人民医院2025年第二批公开招聘专业技术人员备考题库参考答案详解
- 养老院员工培训与考核制度
- 第六章 数据的分析 期末复习训练(含答案)2024-2025学年度北师大版数学八年级上册
- 典型主机遥控系统AC系统维护与管理挪威Kong
- GB/T 45403-2025数字化供应链成熟度模型
- 物流行业安全生产会议记录范文
- 横向课题可行性报告
- GB/T 44253-2024巡检机器人安全要求
- 电力电子技术(广东工业大学)智慧树知到期末考试答案章节答案2024年广东工业大学
- 汽车网络与新媒体营销课件
- DB32T3834-2020水利工程螺杆式启闭机检修技术规程
- 提高卧床患者踝泵运动的执行率
- 伤寒论条文(全398条)
- 资料3b SIG康美包无菌灌装流程及特征分段介绍
评论
0/150
提交评论