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