【发布时间】:2011-01-18 01:44:42
【问题描述】:
全部,
我第一次开始编写面向对象的 R 代码,并预计会有多个 R 文件之间存在依赖关系。我是 R 新手,除了一个庞大的脚本来测试想法之外,还没有写过任何东西。是否有在线资源提供有关如何组织代码的提示?缺少有关如何构建软件包的描述,我找不到这样的指导。在这一点上,我只想以这样一种方式组织代码,使加载和与例程集合交互尽可能简单。
感谢您提供的任何指导。
克里斯
【问题讨论】:
标签: r
全部,
我第一次开始编写面向对象的 R 代码,并预计会有多个 R 文件之间存在依赖关系。我是 R 新手,除了一个庞大的脚本来测试想法之外,还没有写过任何东西。是否有在线资源提供有关如何组织代码的提示?缺少有关如何构建软件包的描述,我找不到这样的指导。在这一点上,我只想以这样一种方式组织代码,使加载和与例程集合交互尽可能简单。
感谢您提供的任何指导。
克里斯
【问题讨论】:
标签: r
这个问题与:"How to organize large R programs?"密切相关
您应该考虑创建一个 R 包。您可以使用package.skeleton 函数从给定的一组 R 文件开始。我还强烈建议在开始时使用roxygen 来记录包,因为事后这样做要困难得多。
阅读"Writing R Extensions"。在线书籍“Statistics with R”有a section on this subject。还可以查看 Friedrich Leisch 的 Creating R Packages: A Tutorial。最后,如果您在纽约,请通过"Authoring R Packages: a gentle introduction with examples" 参加即将举行的 NY use-R 小组会议。
只是重申一些关于良好做法的建议:
R CMD check,这对于捕捉错误非常有帮助;您可以单独查看使用codetools 包。编辑:
关于如何在不重建和安装完整包的情况下进行增量更改:我发现最简单的方法是在相关的 R 文件中进行更改,然后使用 source 命令加载这些更改。一旦您将库加载到 R 会话中,它在环境中将始终低于 .GlobalEnv(并且优先级较低),因此您直接获取或加载的任何更改都将首先使用(使用 search 命令看到这个)。这样,您就可以让您的包成为底层,并在您在环境中测试它们时覆盖更改。
或者,您可以使用像 StatET 或 ESS 这样的 IDE。它们使从 R 包中加载单独的行或函数变得非常容易。 StatET 设计得特别好,可以处理在类目录结构中管理包。
【讨论】:
Build > Build and reload 即可。
这是为了其他在搜索时被定向到此帖子的人的利益。
我也面临完全相同的情况,但没有找到可以清楚解释的资源。
这是我尝试通过几个简单的步骤来解决问题:
1)新建项目目录
2) 通过 R studio 创建包(过程同上)
3) 将两者保持在同一位置(以避免混淆)。
4) 安装和加载包:devtools 和 roxygen2。
5) 使用函数 load_all()。
你就完成了。
【讨论】:
load_all()有什么功能?