您在R中使用哪些最佳实践进行编程?

时间:2010-02-13 15:40:50

标签: r

R中的编程有哪些好的做法?

由于R是一种我不会一直使用的特殊用途语言,因此我通常会将一些快速脚本放在一起,这些脚本可以满足我的需求。

但是,编写干净,高效的R代码的一些技巧是什么?

5 个答案:

答案 0 :(得分:20)

您已经提供了一些提示,说明您的方法是'破解快速脚本'。如果您需要最佳实践和结构,请简单地遵循CRAN中已建立的最佳实践

  • 创建一个包,这打开了运行R CMD check的大门,非常有用
  • 正如许多人所说,有一个软件包可以帮助你进行代码编写阶段,因为你有点被迫记录代码;这是一件好事(TM)
  • 一旦有了一个软件包,请在文档的\examples{}部分添加代码,因为这将在R CMD check期间运行,并且可以轻松进入回归测试
  • 一旦习惯了回归测试,就开始使用RUnit之类的包;真的最佳实践
  • JD指向Google Style Guide的指针也很好。这不是唯一的风格指南,例如Henrik's R Coding Convention在它之前几年;还有Hadley's riff on Google's style guide
  • 否则,老人 - 但是金子'做你的同事和共同作者所做的'也适用

答案 1 :(得分:14)

我推荐Josh Reich的负载,清洁,功能,来自this previous question的工作流程。

此外,我建议遵循Google's R Style Guide等编码指南。使用编码样式指南使得以后阅读代码变得更加容易。

答案 2 :(得分:6)

我完全同意现有的答案,特别是关于包的使用。软件包需要大量的规程,文档和结构,这确实有助于实施最佳实践(以及R CMD CHECK)。您也可以使用the codetools package来帮助解决此问题。使用roxygen包进行记录。

除此之外,我建议您不仅要对代码进行矢量化,更重要的是,尽一切努力对函数进行矢量化,这意味着您应该能够提供向量参数并返回向量(甚至来自数据库调用之类的东西)。从长远来看,这将真正提高您的代码效率和清晰度。

最后,我非常喜欢使用像Sweave这样的东西,在编写报告时将我的代码组织成清晰的文字可重复研究。除此之外,我建议使用缓存包。

答案 3 :(得分:2)

为了提高效率,首选for循环上的向量操作。

答案 4 :(得分:1)

这是一般的编程实践,但使用SVN等版本控制系统来管理代码。