R代码示例/最佳实践

Bob*_*ght 9 comments coding-style r s4

我是R的新手,并且很难将来自各种来源的信息拼凑起来,这些信息与编写R代码的"好"做法有关.我已经阅读了基本指南,但我一直很难找到最新的信息.

  1. 编写良好/记录的S3类有哪些例子?
  2. 相应的S4课怎么样?
  3. 在评论.R类/函数时,您使用哪些约定?你把所有的评论都放在.Rd文件和.R文件中吗?这些文件的同步是否令人厌烦?

Sha*_*ane 7

是否使用S3,S4或一个包主要是一个样式问题(如Dirk所说),但我建议使用其中一个如果你想拥有一个非常结构化的对象(就像你在任何OOP语言中一样) ).例如,所有时间序列类都有时间序列对象(我相信它们都是S3,除了),因为它允许它们围绕这些对象的构造和使用强制执行某些行为.与创建包的问题类似:如果您经常重复使用代码或者代码对其他人有用,那么最好这样做.它需要更多的努力,但增加的组织结构可以轻松弥补成本.

关于S3与S4(在R-Help 这里这里讨论),基本准则是S3类更"快速和肮脏",而S4类对对象和类型进行更严格的控制.如果你正在使用Bioconductor,你通常会使用S4(例如,参见"S4类和方法").

我建议阅读以下部分内容:

  1. Christophe Genolini撰写的"A(不是那么)S4简介"
  2. "程序员的利基:一个简单的课程,在S3和S4",作者:Thomas Lumley
  3. "Brobdingnag:使用S4方法的''hello world''包",作者是Robin KS Hankin
  4. Douglas Bates将"转换为S4"
  5. 约翰·钱伯斯的"S4方法如何运作"

有关文档,Hadley的建议是:Roxygen将使生活更轻松,并将文档放在代码旁边.除此之外,您可能仍希望在代码中提供 Roxygen或man文件所需的其他注释,在这种情况下,为其他开发人员注释代码是一种很好的做法.这些评论不会以你的方式结束; 它们只能在源代码中看到.


Dir*_*tel 5

这是六个或更多问题捆绑在一起,这使得很难回答.

所以让我们从内到外尝试:首先尝试解决您的RODBC包装问题.代码表示将表明自己.我将从简单的函数开始,然后可能围绕它构建一个包.这已经给你一些封装.

其余大部分都是风格.一些着名的R代码发誓S4,而另一些则发誓.您可以随时阅读其他人的包以及R本身的代码.您可以始终以不同的方式重新实现您的RODBC包装,并比较您自己的方法.

编辑:反映您更新和缩短的问题:从CRAN中选择一些软件包,特别是您使用的软件包.我想你会很快根据自己的风格找到一些或多或少有趣的东西.


had*_*ley 5

对于3.使用roxygen - 它像javadoc一样在源文件中进行注释并构建Rd文件.