- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
R软件及统计分析因子列表数据框程序设计结构参考
参数(自变量) 函数可以带虚参数(形式自变量)。S函数调用方式很灵活,例如,如下函数: fsub =function(x, y) x-y 有两个虚参数x和y,我们用它计算100-45,可以调用fsub(100,45),或fsub(x=100,y=45) ,或fsub(y=45, x=100),或fsub(y=45, 100)。即调用时实参与虚参可以按次序结合,也可以直接指定虚参名结合。实参先与指定了名字的虚参结合,没有指定名字的按次序与剩下的虚参结合。 函数在调用时可以不给出所有的实参,这需要在定义时为虚参指定缺省值。例如上面的函数改为: fsub = function(x, y=0) x-y 则调用时除了可以用以上的方式调用外还可以用fsub(100),fsub(x=100)等方式调用,只给出没有缺省值的实参。 即使没有给虚参指定缺省值也可以在调用时省略某个虚参,然后函数体内可以用missing() 函数判断此虚参是否有对应实参,如: trans = function(x, scale){ if(!missing(scale)) x = scale*x ………… } 此函数当给了scale的值时对自变量x乘以此值,否则保持原值。这种用法在其它语言中是极其少见的,S可以实现这一点是因为S的函数调用在用到参数的值时才去计算这个参数的值(称为“懒惰求值”),所以可以在调用时缺少某些参数而不被拒绝。 S函数还可以有一个特殊的“...”虚参,表示所有不能匹配的实参,调用时如果有需要与其它虚参结合的实参必须用“虚参名=”的格式引入。例如: f =function(...){ for(x in list(...)) cat(min(x), \n)} f(c(5,1,2), c(9, 4, 7)) 1 4 作用域 函数的虚参完全是按值传递的,改变虚参的值不能改变对应实参的值。例如: x = list(1, abc) x f =function(x) x[[2]] - !! f(x) x 函数体内的变量也是局部的,对函数体内的变量赋值当函数结束运行后变量值就删除了,不影响原来同名变量的值。例如: x = 2 f = function(){print(x) ; x= 20 } f() [1] 2 x [1] 2 这个例子中原来有一个变量x值为2,函数中为变量x赋值20,但函数运行完后原来的x值并未变化。但是也要注意,函数中的显示函数调用时局部变量x还没有赋值,显示的是全局变量x 的值。这是S编程比较容易出问题的地方:你用到了一个局部变量的值,你没有意识到这个局部变量还没有赋值,而程序却没有出错,因为这个变量已有全局定义。 程序调试 S-PLUS和R目前还不象其它主流程序设计语言那样具有单步跟踪、设置断点、观察表达式等强劲的调试功能。调试复杂的S程序,可以用一些通用的程序调试方法,另外S也提供了一些调试用函数。 对任何程序语言,最基本的调试手段当然是在需要的地方显示变量的值。可以用print() 或cat()显示。例如,我们为了调试前面定义的larger()函数,可以显示两个自变量的值及中间变量的值: larger - function(x, y){ cat(x = , x, \n) ;cat(y = , y, \n); y.is.bigger =(yx); cat(y.is.bigger = , y.is.bigger, \n) ;x[y.is.bigger] = y[y.is.bigger] x } S提供了一个browser()函数,当调用时程序暂停,用户可以查看变量或表达式的值,还可以修改变量。例如: larger= function(x, y){ y.is.bigger - (yx); browser() ;x[y.is.bigger] =y[y.is.bigger]; x ;} 我们运行此程序: larger(c(1,5), c(2, 4, 9)) 退出R的browser()菜单可用c(在S中用return())。在R的browser()状态下用n命令可以进入单步执行状态,用n或者回车可以继续,用c可以退出。 R提供了一个debug()函数,debug(f)可以打开对函数f()的调试,执行到函数f时自动进入单步执行的browser()菜单。用undebug(f)关闭调试。 Warning in y x : longer object length is not a multiple of shorter object length Called from: larger(c(1, 5), c(2, 4, 9)) Browse[1] y [1] 2 4 9
您可能关注的文档
- PPT-《家用汽车产品修理、更换、退货责任规定》解读与风险预防参考.ppt
- PPAP生产性零组件核准程序(第三版)参考.ppt
- PPT-制药企业GMP自检培训-----物料及生产管理系统参考.ppt
- PPT-保险公司客户服务投诉情况分析课件参考.ppt
- PPT-区域推进校本教研制度的建设与实施研究参考.ppt
- PPT-化工、医药、危险化学品安全生产监督和管理参考.ppt
- PPT-开发区危险化学品安全生产管理培训参考.ppt
- PPT-某著名汽车零部件公司15-DA5DOESlides020207DAJAMA-CH-EN-汽车参考.ppt
- PPT-全面推进职业学校教学工作诊断与改进制度的实践思考参考.ppt
- PoC手册具体测试策略配置与会话管理参考.doc
- 2009-重大-面向非常规突发事件预警的Web信息流监控和传播研究.pdf
- EDA软件:OrCAD二次开发_OrCAD版本兼容性开发.docx
- “星链”软件供应链安全建设方案.pptx
- 2011-面上-组织视角下的建筑业行为安全理论(BBS)及其在工程项目管理中的应用.pdf
- ENVI遥感实验:农业耕作与城市绿地变化监测-CSDN文库.docx
- 华工毕业终期答辩模板_内容多且包含应用_包含母版和主题色.pptx
- EDA软件:OrCAD二次开发_OrCAD脚本语言应用.docx
- 2007-面上-非营利组织市场导向及其组织绩效的研究.pdf
- EDA软件:OrCAD二次开发_OrCAD与外部程序接口.docx
- EDA软件:OrCAD二次开发_OrCAD二次开发最佳实践.docx
最近下载
- 2023年贵州毕节市金沙县面向全县考调机关事业单位招聘笔试参考题库附带答案详解.pdf VIP
- 松下 Panasonic AG-CX200MC中文说明书 用户手册 说明书下载 使用指南 如何使用 详细操作 使用说明.pdf
- 经销商返利协议.docx VIP
- 消防安全知识培训课件(2023最新).pptx
- 2023—2024学年湖南省普通高中高一下学期学业水平合格性考试化学模拟试卷.doc VIP
- 一种MES管理系统及MES管理方法.pdf VIP
- JBT 13604-2018 氧化铝专用料浆阀.pdf
- 土地法学教学课件.ppt VIP
- 2024新版(人教版)七年级英语上、下册单词带音标.pdf VIP
- 2024年初级会计职称《初级会计实务》精讲课件 第1-5章.pptx
文档评论(0)