2010-02-13 36 views
34

R中编程有什么好的做法?您在R中使用什么最佳实践进行编程?

由于R是一种特殊用途的语言,我并不是一直都在使用,所以我通常只是将一些快速脚本拼凑在一起,以满足需要。

但是,编写干净而高效的代码有哪些技巧?

+0

感兴趣的相关问题:http://stackoverflow.com/questions/1295955/what-is-the-most-useful-r-trick(SO应该找到更好的工作,它显示jQuery和Windows 7问题为“相关”)。 – Frank 2010-02-14 14:12:19

回答

14

我推荐Josh Reich从this previous question开始的Load,Clean,Func,Do工作流程。

另外,我建议遵循如下编码准则,如Google's R Style Guide。使用编码风格指南使得后面的代码更容易阅读。

+3

我希望'点'命名约定没有在该风格指南(例如some.variable.name)中被认可。它的历史在它的一边,大多数R代码是这样写的,尽管如此,不是粉丝。 – doug 2010-02-13 16:25:03

+1

我同意道格。我自己使用camelCase。风格指南,比如版本控制,更少关于你选择哪一个,更多关于挑选和使用它。 – 2011-08-05 12:11:03

19

你已经提供了一些提示,声明你的方法是'破解快速脚本'。如果你想要的最佳实践和结构,简单按照建立的最佳实践从CRAN:

  • 创建一个包,这将打开大门,运行R CMD check这是非常有用
  • ,很多人都表示,有一个包可以帮助你在的代码阶段,因为你有点被迫记录代码;这是一件好事(TM)
  • ,一旦你有一个包,在R CMD check在文档的\examples{}部分添加代码,因为这将运行,并提供了一个方便快捷的出入回归测试
  • 一旦你习惯了回归测试,开始使用一个包,如RUnit;真的最佳实践
  • JD的指针Google Style Guide也是一个很好的指示。这不是唯一的风格指南,例如Henrik's R Coding Convention先于它几年;而且也有Hadley's riff on Google's style guide
  • 否则,过时的歌曲,但-戈尔迪“做你的同事和合作者做”也适用
6

我与现有的答案完全一致,特别是关于套餐的使用。软件包需要很多纪律,文档和结构,这确实有助于实施最佳实践(以及R CMD CHECK)。您也可以使用the codetools package来解决这个问题。使用roxygen软件包进行文档编制。除此之外,我建议你不仅向量化你的代码,更特别的是,尽一切努力来矢量化你的函数,这意味着你应该能够提供向量参数并且返回向量(即使是从像数据库调用)。从长远来看,这将真正提高您的代码效率和清晰度。

最后,我真的很喜欢用Sweave这样的东西来将我的代码组织成清晰的文字重现性研究,无论何时写报告。除此之外,我建议使用缓存包。

+0

谢谢你的回答谢恩。 你有没有使用“codetools”包的例子? – 2010-02-14 11:21:05

2

为了提高效率,优先于for循环的矢量操作。

1

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