网站大量收购闲置独家精品文档,联系QQ:2885784924

R语言学习系列09-自定义函数与apply函数族.docx

R语言学习系列09-自定义函数与apply函数族.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
R语言学习系列09-自定义函数与apply函数族

09. 自定义函数与apply函数族一、自定义函数1. R语言中,自定义函数的基本格式为:myfun-function(arglist){statements return(object) }其中,myfun为函数名称;arglist为参数列表;大括号中的部分为函数体。函数体通常包含三部分:(1)异常处理输入的数据不能满足函数计算的要求,或者类型不符,应设计异常处理机制提示哪个地方出现错误;(2)内部处理过程包括具体的内部处理步骤,与该函数要完成的功能有关;(3)返回值用函数return()给出,返回对象的类型是任意的;函数在内部处理过程中,一旦遇到return()就会终止运行函数体,将return()内的数据作为函数处理的结果返回。2. 自定义函数及调用实例操作下面自定义函数计算标准差:(1)先在RStudio的代码编辑窗口编写函数,并保存为E:\办公资料\R语言\R语言学习系列\codes\std2.R##计算标准差std2-function(x){ #异常处理 if(!is.numeric(x)){ stop(the input data must be numeric! \n) } if(length(x)==1){ stop(can not compute std for one number, a numeric vector required. \n) } result-sqrt(sum((x-mean(x))^2)/(length(x)-1)) return(result)}(2)调用std2.R要调用创建好的函数,在命令控制台窗口,先使用source(std2.R,encoding=utf-8)注意改到当前路径;若不加encoding=utf-8将弹出警告信息。 再调用函数即可。 setwd(E:/办公资料/R语言/R语言学习系列/codes) source(std2.R,encoding=utf-8) std2(c(2,6,4,9,12))[1] 3.974921 std2(3) #输入数据为1个数值,异常处理机制报错Error in std2(3) : can not compute std for one number, a numeric vector required. std2(c(1,2)) #输入数据不是数值型,异常处理机制报错Error in std2(c(1, 2)) : the input data must be numeric!或者创建并运行脚本文件:(选中代码,点run按钮)二、apply函数族R语言中,利用apply族函数可将某函数作用到一系列数据对象上,包括标量、向量、矩阵、多维数组、数据框、列表。表1 apply函数族常用函数函数名称作用对象返回结果apply()矩阵、多维数组、数据框向量、多维数组、列表lapply()列表、数据框、向量列表sapply()列表、数据框、向量向量、多维数组、列表tapply()不规则阵列阵列mapply()多个列表、多个向量列表 1. 函数apply()对数据对象的一个维度,都作用上某函数,生成列表、多维数组或向量。基本格式为:apply(x, MARGIN=..., fun, ...)其中,x为数据对象(矩阵、多维数组、数据框);MARGIN=1表示按行,2表示按列;fun表示要作用的函数。 x-matrix(1:6,ncol=2) x [,1] [,2][1,] 1 4[2,] 2 5[3,] 3 6 apply(x,1,mean) #按行求均值[1] 2.5 3.5 4.5 apply(x,2,mean) #按列求均值[1] 2 52. 函数lapply()对数据对象的每一个元素,都作用上某函数,生成一个与元素个数相同的值列表。基本格式为:lapply(x, fun, ...)其中,x为数据对象(列表、数据框、向量)。 x-list(a=1:5,b=exp(0:3)) x$a[1] 1 2 3 4 5$b[1] 1.000000 2.718282 7.389056 20.085537 lapply(x,mean)$a[1] 3$b[1] 7.798219 3. 函数sapply()基本格式为:lapply(x, fun, ..., simplify=TRUE, USE.NAMES=...)比函数lapply()多了一个参数simplify,若simplify=FALSE,则同lapply();若为TRUE,则将输出的list简化为向量或矩阵;若USE.NAMES为TRUE,且x为字符型,则用x作为结果的名称。 sapply(x, mean, simplify = TRUE) #x同上例 a

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档