如何修复开源R包中的错误?

时间:2010-08-04 02:03:12

标签: r

我想修复一个包,但无法弄清楚如何编辑它。我可以download the source from R-Forge作为.tar.gz并解压缩它。有一个带有源的“R”目录和一个“tests”目录。

如何在我自己的项目中包含源代码来测试我的编辑?

如何运行测试?每个测试都以“library(blotter)”开头。如何从我下载的源中加载库。

5 个答案:

答案 0 :(得分:4)

推荐的过程在R安装附带的“Writing R Extensions”手册中有详细描述。

网上还有很多教程。

答案 1 :(得分:2)

无需重新压缩源代码。只需从驱动器上的源再次加载包:

install.packages(/path/to/package, repos = NULL, type="source")

执行for循环以循环R文件的方法在某些情况下会起作用,但在其他情况下则可能不起作用。例如,如果存在已编译的非R代码,则遍历* .R文件可能无法正常工作。因此,再次安装.packages()通常会更好。

顺便说一句,如果您将版本控制存储库克隆到硬盘驱动器,通常不会获得zip文件。因此使用相同的方法进行安装。

答案 2 :(得分:0)

我所做的是以下(IIRC)删除旧包remove.packages。将您的新包重新压缩到tar.gz文件(使用更改的源)。安装带有install.packages的新软件包,其中pkg = path到您的压缩库,并且repos = NULL。

答案 3 :(得分:0)

当我在包上进行测试时,我使用了一个看起来像这样的小bash脚本:

#!/bin/bash
#build the package from source
R CMD build ../pkgdirectory/
#remove the old version and install the new one
R CMD REMOVE pkgname
R CMD INSTALL pkgname_0.7.tar.gz

使用适当的名称替换包名称。将其保存为“make”,然后在完成主要编辑时运行它。然后你的测试脚本就像正常一样使用库(pkgname)。

答案 4 :(得分:-2)

我发现我可以通过执行以下操作来加载所有来源以避免荒谬的重新包装:

for (file in dir("../R", pattern="*.R", full.names=TRUE)) {
  source(file)
}