组织R源代码

所有,

我开始第一次编写面向对象的R代码,并预计有多个R文件之间存在依赖关系。 我是R新手,还没有写任何超出一个大规模脚本testing想法的东西。 网上有资源提示如何组织代码? 没有关于如何构build软件包的描述,我没有find这样的指导。 在这一点上,我只想组织代码,以便尽可能简单地加载和交互例程集合。

感谢您可以提供的任何指导。

克里斯

这个问题与“如何组织大型R程序”密切相关。

你应该考虑创build一个R包。 您可以使用package.skeleton函数从给定的一组R文件开始。 我还强烈build议在开始时使用roxygen来logging软件包,因为在事实之后做这件事情要困难得多。

阅读“编写R扩展” 。 在线图书“统计与R”有一个关于这个问题的部分 。 另请参阅创buildR软件包: Friedrich Leisch 的教程 。 最后,如果你在纽约,可以参加即将举行的纽约使用R组会议:“创作R包:一个温柔的例子” 。

只是想重申一些关于良好实践的build议:

  • 一个包允许你使用R CMD check ,这对于捕捉错误非常有帮助; 分开你可以看看使用codetools包。
  • 一个软件包也会迫使你做最less量的文档,从长远来看可以带来更好的实践。
  • 你也应该考虑做unit testing(比如用RUnit ),如果你希望你的代码是健壮的/可维护的。
  • 您应该考虑使用风格指南(例如Google风格指南 )。
  • 从一开始就使用版本控制系统,如果你打算让你的代码开源,那么考虑使用github或r-forge。

编辑:

关于如何在不重build和安装完整软件包的情况下进行增量更改:我发现最简单的方法是对相关的R文件进行更改,然后使用source命令加载这些更改。 一旦将库加载到R会话中,它将永远比环境中的优先级低(优先级低于)。因此,直接input或加载的所有更改都将首先使用(使用search命令查看这个)。 这样,您可以将您的软件包作为基础,并在您在环境中testing它们时覆盖更改。

或者,您可以使用像StatET或ESS的IDE。 它们使得从R包中加载单独的行或函数非常容易。 StatET特别devise用于处理类似目录结构的pipe理软件包。

这是为了受益于其他人在search时被引导到这个职位。 我也面对完全相同的情况,没有find明确解释的资源。 我试图通过几个简单的步骤来解决这个问题:
1)创build一个新的项目目录
2)通过R studio创build一个包(与上面相同的过程)
3)保持在同一地点(以避免混淆)。
4)安装和加载软件包:devtools和roxygen2。
5)使用函数load_all()。

你完成了。