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

如何修复开源R包中的错误?,r,R,我想修复一个包,但不知道如何编辑它。我可以将其作为.tar.gz并解压缩。有一个包含源代码的“R”目录,还有一个“tests”目录 如何在我自己的项目中包含源以测试我的编辑 如何运行测试?每个测试都以“库(吸墨纸)”开始。如何使其从我下载的源代码加载库。我所做的是以下(IIRC)删除旧包remove.packages。重新将新包压缩到tar.gz文件(使用更改的源代码)。使用Install.packages安装新软件包,pkg=path指向压缩库,repos=NULL。我所做的是以下操作(IIR

我想修复一个包,但不知道如何编辑它。我可以将其作为.tar.gz并解压缩。有一个包含源代码的“R”目录,还有一个“tests”目录

如何在我自己的项目中包含源以测试我的编辑


如何运行测试?每个测试都以“库(吸墨纸)”开始。如何使其从我下载的源代码加载库。

我所做的是以下(IIRC)删除旧包
remove.packages
。重新将新包压缩到tar.gz文件(使用更改的源代码)。使用
Install.packages
安装新软件包,pkg=path指向压缩库,repos=NULL。

我所做的是以下操作(IIRC)删除旧软件包
remove.packages
。重新将新包压缩到tar.gz文件(使用更改的源代码)。使用
Install.packages
安装新软件包,pkg=path指向压缩库,repos=NULL。

建议的过程在R安装附带的手册“编写R扩展”中有详细说明


网络上也有很多教程。

安装R时附带的“编写R扩展”手册中详细介绍了推荐的过程


网络上也有很多教程。

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

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

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

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

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

install.packages(/path/to/package, repos = NULL, type="source")
在某些情况下,在R文件之间执行for循环的方法会起作用,但在其他情况下可能不会。例如,如果存在已编译的非R代码,则跨*.R文件的循环可能无法正常工作。因此,通常最好再次安装.packages()


顺便说一句,如果你把一个版本控制repo克隆到你的硬盘上,你通常不会得到zip文件。因此,使用相同的方法进行安装

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

install.packages(/path/to/package, repos = NULL, type="source")
在某些情况下,在R文件之间执行for循环的方法会起作用,但在其他情况下可能不会。例如,如果存在已编译的非R代码,则跨*.R文件的循环可能无法正常工作。因此,通常最好再次安装.packages()


顺便说一句,如果你把一个版本控制repo克隆到你的硬盘上,你通常不会得到zip文件。因此,使用相同的方法进行安装

当我在软件包上进行测试时,我会使用一个小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)。

当我在包上进行测试时,我会使用一个小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)。

wow。那是一种难以置信的痛苦。有没有办法在每次修改后不必不断压缩我的源代码就可以做到这一点呢?你已经进入了一台计算机,实现了自动化。哇。那是一种难以置信的痛苦。有没有办法在每次修改后都不必不断压缩我的源代码就可以做到这一点呢?你已经去了一台计算机,让它自动化。相关的?相关的?@Ben McCann:他没有告诉你去RTFM,他把你指给了正确的人……呵呵,下次我会尽量不那么直截了当的。我非常感谢你的帮助。堆栈溢出的好处在于,您可以获得快速问题的具体答案。我真的很感激你能给我指点手册中的具体章节,也许还包括一段摘录:o)没那么有用的是,哦,它就在那141页的某个地方。如果你很感激你的帮助,请投票给我答案。如果你想充分利用R,请放心,你必须阅读超过141页。还有更多。@Ben McCann:他没有告诉你去RTFM,他把你指给了正确的人……呵呵,下次我会尽量不那么直截了当的。我非常感谢你的帮助。堆栈溢出的好处在于,您可以获得快速问题的具体答案。我真的很感激你能给我指点手册中的具体章节,也许还包括一段摘录:o)没那么有用的是,哦,它就在那141页的某个地方。如果你很感激你的帮助,请投票给我答案。如果你想充分利用R,请放心,你必须阅读超过141页。更多。类似的函数包含在
?source
的示例中。。。但是我真的帮不了你,因为你知道如何阅读手册,对吗?类似的函数包含在
?source
的示例中。。。但我真的帮不了你,因为你知道如何阅读手册,对吗?你可以跳过删除步骤;接下来的安装将为您完成。不过,您可以根据您创建的tarball添加一个
R CMD check
步骤。感谢您提供的删除提示。是的,我经常包括检查,特别是在组装包的早期阶段,但是当我只是调整代码时,我会跳过这一步,因为这需要一段时间;接下来的安装将为您完成。不过,您可以根据您创建的tarball添加一个
R CMD check
步骤。感谢您提供的删除提示。是的,我经常包括检查,特别是在组装包的早期阶段,但是当我只是调整代码时,我会跳过这一步,因为这需要一段时间。