所有
我第一次开始编写面向对象的R代码,并期望有多个R文件之间具有依赖关系。我是R的新手,还没有在一个巨大的脚本之外写任何东西来测试想法。是否有在线资源提供有关如何组织代码的提示?如果没有关于如何构建包的描述,我没有找到这样的指导。在这一点上,我只想以这样的方式组织代码,使得它尽可能简单地加载和交互例程集合。
感谢您提供的任何指导。
克里斯
答案 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
包。编辑:
关于如何在不重建和安装完整包的情况下进行增量更改:我发现最简单的方法是在相关的R文件中进行更改,然后使用source
命令加载这些更改。将库加载到R会话后,它将始终低于.GlobalEnv环境(并且优先级较低),因此将首先使用您直接获取或加载的任何更改(使用{{1} }命令看到这个)。这样,您就可以将您的软件包置于底层,并在您在环境中测试它们时覆盖更改。
或者,您可以使用像StatET或ESS这样的IDE。它们可以非常容易地从R包装中加载单独的线条或功能。 StatET特别适合处理类似目录结构中的包管理。
答案 1 :(得分:0)
这是为了在搜索时针对此帖子的其他人的利益。
我也面临完全相同的情况,没有找到明确解释的资源。
以下是我尝试将解决方案简化为几个步骤:
1)创建一个新项目目录
2)通过R studio创建一个包(与上面相同的过程)
3)将两者保持在同一位置(以避免混淆)
4)安装和加载包:devtools和roxygen2。
5)使用函数load_all()。
你已经完成了。