9

我是 R 新手,很难将来自各种在线资源的信息拼凑在一起,这些信息与编写 R 代码的“良好”实践有关。我已经阅读了基本指南,但我一直很难找到绝对是最新的信息。

  1. 有哪些编写/记录良好的 S3 类的示例?
  2. 对应的S4班怎么样?
  3. 您在评论 .R 类/函数时使用什么约定?您是否将所有评论都放在 .Rd 文件和 .R 文件中?这些文件的同步很烦人吗?
4

4 回答 4

7

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

关于 S3 与 S4(在此处此处讨论 R-Help ),基本准则是 S3 类更加“快速和肮脏”,而 S4 类对对象和类型进行更严格的控制。如果您正在研究 Bioconductor,您通常会使用 S4(例如,请参阅“S4 类和方法”)。

我建议阅读以下内容:

  1. Christophe Genolini 的“S4 简介(不是这样)”
  2. “程序员的利基:S3 和 S4 中的简单课程”,Thomas Lumley
  3. “Brobdingnag:使用 S4 方法的 ''hello world'' 包”,Robin KS Hankin
  4. Douglas Bates 的“将包转换为 S4”
  5. John Chambers 的“S4 方法如何工作”

对于文档,Hadley 的建议很明确:Roxygen 将使生活更轻松,并将文档放在代码旁边。除此之外,您可能仍希望在代码中提供超出Roxygen 或 man 文件要求的其他注释,在这种情况下,为其他开发人员注释您的代码是一个好习惯。这些评论不会出现在您的包裹中;它们只会在源代码中可见。

于 2009-12-15T14:33:39.343 回答
5

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

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

其余大部分是风格。一些著名的 R 代码对 S4 发誓,而其他人则对此发誓。您始终可以阅读其他人的软件包以及 R 本身的代码。而且您始终可以以不同的方式重新实现您的 RODBC 包装器并比较您自己的方法。

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

于 2009-12-15T12:36:15.277 回答
5

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

于 2009-12-15T14:23:10.440 回答
4

风格相关多于实质内容,但Google R 风格指南值得一读:

于 2009-12-15T16:19:54.513 回答