浅谈R语言中OOP编程方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈R语言中OOP编程方法   摘要:R作为统计领域广泛使用的一种统计软件,具有开源、免费、灵活的诸多优点,编程语言强大,但用到面向对象的编程方法却不多。本文通过对R中面向对象编程的研究,使读者进一步的了解R软件。   关键词:R软件;OOP;泛型函数;类和方法   中图分类号:TP312文献标识码:A文章编号:1007-9599 (2011) 16-0000-02   OOP Programming in the R Language   Bai Yangchun1,Hu Rongxing2,Deng Yongchao1   (1.Sichuan Police College,Luzhou646000,China;2. Meishan Central Branch of the Peoples Bank of China,Meishan620010,China)   Abstract:R is a kind of statistical software widely used as a statistical areas,it has many advantages,such as open source,free,flexible,the programming language is power,but it rarely use object-oriented programming.The paper is a research on R about object-oriented programming in order to let the reader have a better understanding of R software.   Keywords:R software;OOP;Generic function;Classes and methods   一、引言   R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具;完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输入,可实现分支、循环,用户可自定义功能。R主要面向统计计算,似乎很少会用到面向对象的编程方法。但在实际的统计计算中,比如当需要用一种新的方式来表示数据,该方式与已有的数据类型有区别的时候或者当需要一个新的函数,该函数可以根据不同的参数类型做出不同的反应的时候,使用面向对象的编程方法可以使编程更有效率。   二、面向对象的R   在R中可能经常需要定义一个新的函数,相反较少去定义一个新的类。但有时候定义一个类是一个很关键的步骤。一个类通常决定了如何对对象进行处理,决定了对象中应当包含什么样的信息。R的OOP方式基于泛型函数(generic function),而不是基于类层次结构。不过R的方式仍然是单一分派方式,与C++、Java等“传统”语言相同。   R可以进行完全面向对象的编程,但是面向对象并不只限于一种模型。OOP其实并不一定意味着继承,而是一般的分派决策。换言之,在传统OOP语言中的obj.method()调用会通过对象的方法分析次序寻找“第一个”具有.method()方法的obj祖先类。R并不用一系列类来定义和覆盖各种方法,而是创建一系列泛型函数,这些函数带有一个标记,指出它们应该在什么类型的对象上进行操作。   (一)泛型函数   那么到底什么是R中的泛型函数?R中的面向对象又是怎么样的呢?我们首先看下面这样的一个简单的实例[1],创建一个泛型函数whoAmI()以及一些要被分派标记的方法。   whoami-function(x,...)usemethod(“whoami”)   whoami.foo-(x)print(“i am foo”)   whoami.bar-function(x)print(“i am bar”)   whoami.default-function(x)print(“i don’t know who i am”)   这里我们要注意R中的每个对象可能属于零个、一个或多个类。具体地说,任何给定对象的MRO仅仅是class属性中的命名类向量。我们可以用class()函数查看对象所属的类。在创建了泛型函数和类之后,R中的泛型函数是如何工作如图1[5]所示。      图1 泛型函数的工作情况   从上面的例子我们可以看出,如果每个类本身都是一个对象,那么更接近基于原型的OOP系统而不是基于类的系统。R中的“面向对象”是以类和泛型函数为基础,类可以多重继承类,泛型函数可以分派到任意的参数集合,泛型函数将不同的方法聚集到一起,由R根据函数的对象的类型来决定选择执行哪个方法。在某些情况下

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档