组织R源代码

Chr*_*ris 48 r

所有,

我第一次开始编写面向对象的R代码,并期望有多个R文件之间存在依赖关系.我是R的新手,还没有在一个巨大的脚本之外写任何东西来测试想法.是否有在线资源提供有关如何组织代码的提示?如果没有关于如何构建包的描述,我没有找到这样的指导.在这一点上,我只想以这样的方式组织代码,使得它尽可能简单地加载和交互例程集合.

感谢您提供的任何指导.

克里斯

Sha*_*ane 43

这个问题与"如何组织大型R程序?"密切相关.

您应该考虑创建一个R包.您可以使用该package.skeleton函数以给定一组R文件开始.我也强烈建议roxygen在开始时使用文档来记录包,因为事后要做的更难.

阅读"编写R扩展".在线书籍"R with Statistics"有一节关于这个主题.另请参阅Friedrich Leisch撰写的创建R包:教程.最后,如果你在纽约,请参加即将举行的纽约use-R小组会议,题目"创作R包:一个温和的例子介绍".

只是为了重新提出一些有关良好实践的建议:

  • 一个软件包允许你使用R CMD check它对捕获bug有很大帮助; 另外你可以看看使用codetools包.
  • 一个软件包还会强制您执行最少量的文档,这样可以在长期内实现更好的实践.
  • 如果您希望代码是健壮/可维护的,您还应该考虑进行单元测试(例如使用RUnit).
  • 您应该考虑使用样式指南(例如Google Style Guide).
  • 从一开始就使用版本控制系统,如果要打开代码,请考虑使用github或r-forge.

编辑:

关于如何在不重建和安装完整包的情况下进行增量更改:我发现最简单的方法是在相关的R文件中进行更改,然后使用source命令加载这些更改.一旦将库加载到R会话中,它将始终低于.GlobalEnv环境(并且优先级较低),因此将首先使用您直接获取或加载的任何更改(使用search命令查看此).这样,您可以将您的软件包置于底层,并在您在环境中测试它们时覆盖更改.

或者,您可以使用像StatET或ESS这样的IDE.它们可以非常容易地从R包装中加载单独的线条或功能.StatET特别适合处理类似目录结构中的包管理.

  • 查看函数"sourceDir",它位于"source"函数的帮助文件的示例部分中(在R commnand提示符下键入"?source").我在〜/ .Rprofile文件中有一个非常相似的函数,我在sourceDir()我正在构建的包的mypackage/R目录中进行更改.偶尔我会重新安装软件包,但我发现这种方式更容易进行增量更改,而不会消除我在解释器中进行的任何当前工作. (3认同)