R代码示例/最佳实践

时间:2009-12-15 04:58:52

标签: r coding-style comments s4

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

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

4 个答案:

答案 0 :(得分:7)

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

关于S3与S4(在R-Help herehere上讨论),基本准则是S3类更“快速而肮脏”而S4类更多对对象和类型的严格控制。如果您正在使用Bioconductor,通常会使用S4(例如,参见"S4 classes and methods")。

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

  1. "A (Not So) Short Introduction to S4" by Christophe Genolini
  2. "Programmers' niche: A simple class, in S3 and S4" by Thomas Lumley
  3. "Brobdingnag: a ''hello world'' package using S4 methods" by Robin K. S. Hankin
  4. "Converting packages to S4" by Douglas Bates
  5. "How S4 Methods Work" by John Chambers
  6. 对于文档,Hadley的建议是现场:Roxygen将使生活更轻松,并将文档放在代码旁边。除此之外,您可能仍希望在代码之外提供 Roxygen或man文件所需的其他注释,在这种情况下,为其他开发人员注释代码是一种很好的做法。这些评论不会以你的方式结束;它们只会在源代码中显示。

答案 1 :(得分:5)

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

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

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

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

答案 2 :(得分:5)

对于3.使用roxygen - 它像javadoc一样在源文件中记录并构建Rd文件。

答案 3 :(得分:4)

与实体相关的风格更多,但Google R style guide值得一读: