R 包开发设置(处理和构建链)

Setup for R package development (Process and build chain)

我想弄清楚使用 RStudio(和 Windoze)的 R 开发过程应该如何看待,以防我想自定义现有包供个人使用。因此,假设有一个包 X(我已经使用 cran/rforge 中的 packages.install 安装了它)具有我在我的函数 z 中使用的函数 y(在某些文件 ~/myRFile.R 中)。

所以我会做的是:

  1. 删除安装包(使用remove.packages(X))
  2. 从 rforge/github 等获取源并将其保存在 ~/downloadedPackage.
  3. 现在我开始纠结接下来要做什么。 link 我的现有文件 (~/myRFile.R) 到 ~/downloadedPackage 中的源的最佳方式是什么?我知道我可能会弄清楚 y 在哪个 R 文件函数中并使用 source("~/downloadedPackage/theFileWithFunctionY.R") 加载它,但我无法想象这是这样做的正确方法,或者是吗?我想有一种方法可以一次 "load"/"source" 所有代码吗?我也试过只是使用

    install.packages("~\downloadedPackage")

    库(下载包)

但这只是给了我 "installing package... warning package is not available (as binary package for R...)"。此外,我假设在开发过程中每次进行小改动时安装包无论如何都不是最佳选择(例如,我猜想一旦安装代码就很难调试它)。

所以我并不是真的在寻找关于如何构建包的分步说明,而是在寻找如何设置最佳流程和工具链的大局,以便

  1. 修改
  2. 测试
  3. 重新安装

一个现有的 R 包。

顺便说一句:我最熟悉 Java buildtools/process 以防通过参考另一组构建工具(javac、ant、maven、gradle 更容易解释它等)。

三种解决方案:

  1. 您可以 install an R package from source

    install.packages(path_to_file, repos = NULL, type="source")
    
  2. 可以通过RStudio安装。在 RStudio 中执行 File->New Project,然后将该目录作为 R 项目打开。单击 "Build and Reload"(在“构建”选项卡下)将重新安装包(有关更多信息,请参阅 here)。在 RStudio 中打开它使得 "make changes/reinstall" 循环非常简单。

  3. 如果你想加载包而不安装它,你可以安装 devtools package, and use load_all:

    devtools::load_all("~/downloadedPackage")
    

    这样做的额外好处是比重新安装快一点。