我是 R 新手,很难将来自各种在线资源的信息拼凑在一起,这些信息与编写 R 代码的“良好”实践有关。我已经阅读了基本指南,但我一直很难找到绝对是最新的信息。
- 有哪些编写/记录良好的 S3 类的示例?
- 对应的S4班怎么样?
- 您在评论 .R 类/函数时使用什么约定?您是否将所有评论都放在 .Rd 文件和 .R 文件中?这些文件的同步很烦人吗?
我是 R 新手,很难将来自各种在线资源的信息拼凑在一起,这些信息与编写 R 代码的“良好”实践有关。我已经阅读了基本指南,但我一直很难找到绝对是最新的信息。
是使用 S3、S4 还是一个包主要是一个样式问题(正如 Dirk 所说),但如果你想要一个结构非常好的对象,我建议使用其中一个(就像你在任何 OOP 语言中一样)。例如,所有时间序列类都有时间序列对象(我相信它们都是 S3,除了它的),因为它允许它们围绕这些对象的构造和使用强制执行某些行为。与创建包的问题类似:如果您将经常重复使用您的代码或者该代码对其他人有用,那么这样做是一个好主意。它需要更多的努力,但增加的组织结构可以轻松弥补成本。
关于 S3 与 S4(在此处和此处讨论 R-Help ),基本准则是 S3 类更加“快速和肮脏”,而 S4 类对对象和类型进行更严格的控制。如果您正在研究 Bioconductor,您通常会使用 S4(例如,请参阅“S4 类和方法”)。
我建议阅读以下内容:
对于文档,Hadley 的建议很明确:Roxygen 将使生活更轻松,并将文档放在代码旁边。除此之外,您可能仍希望在代码中提供超出Roxygen 或 man 文件要求的其他注释,在这种情况下,为其他开发人员注释您的代码是一个好习惯。这些评论不会出现在您的包裹中;它们只会在源代码中可见。
这是六个或更多问题捆绑在一起,这使得它很难回答。
因此,让我们从内到外尝试:首先尝试解决您的 RODBC 包装器问题。代码表示会自行提示。我会从简单的函数开始,然后可能围绕它构建一个包。这已经给了你一些封装。
其余大部分是风格。一些著名的 R 代码对 S4 发誓,而其他人则对此发誓。您始终可以阅读其他人的软件包以及 R 本身的代码。而且您始终可以以不同的方式重新实现您的 RODBC 包装器并比较您自己的方法。
编辑:反映您更新和缩短的问题:从 CRAN 中挑选一些包,特别是在您使用的包中。我想你会很快根据你的风格找到一些或多或少有趣的东西。
对于 3. 使用 roxygen - 它像 javadoc 一样在源文件中获取注释并构建 Rd 文件。
风格相关多于实质内容,但Google R 风格指南值得一读: