组织R源代码

时间:2010-02-17 21:12:23

标签: r

所有

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

感谢您提供的任何指导。

克里斯

2 个答案:

答案 0 :(得分:43)

这个问题与"How to organize large R programs?"

密切相关

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

阅读"Writing R Extensions"。在线书籍“R with Statistics”有a section on this subject。另请参阅Friedrich Leisch的{​​{3}}。最后,如果您在纽约,请参加Creating R Packages: A Tutorial即将举行的NY use-R小组会议。

重新提出一些有关良好做法的建议:

  • 一个包允许你使用R CMD check,这对于捕获bug很有帮助;您可以单独使用codetools包。
  • 一个软件包还会强制您执行最少量的文档,这样可以在长期内实现更好的实践。
  • 如果您希望代码具有健壮性/可维护性,您还应该考虑进行单元测试(例如使用"Authoring R Packages: a gentle introduction with examples")。
  • 您应该考虑使用样式指南(例如RUnit)。
  • 从一开始就使用版本控制系统,如果您要使代码开源,请考虑使用github或r-forge。

编辑:

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

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

答案 1 :(得分:0)

这是为了在搜索时针对此帖子的其他人的利益。 我也面临完全相同的情况,没有找到明确解释的资源。 以下是我尝试将解决方案简化为几个步骤:
1)创建一个新项目目录
2)通过R studio创建一个包(与上面相同的过程)
3)将两者保持在同一位置(以避免混淆) 4)安装和加载包:devtools和roxygen2。
5)使用函数load_all()。

你已经完成了。