在开发R包时,每次进行更改时都必须重新编译包吗?

Dav*_*uer 8 packages r function

我正在开发一个R包

当我调试特定功能或一组功能时,测试该功能的最佳方法是什么?

每次我想检查我的更改时,是否必须使用source('function.R')或R CMD build?

(关联emacs ess键绑定的额外功劳)

had*_*ley 8

另请参阅http://github.com/hadley/devtools/,它提供了一些工具来简化此任务.

例如,在对源代码进行更改之后,使用以下函数构建,安装和重新加载包install():

library(devtools)
install("package_name")
Run Code Online (Sandbox Code Playgroud)

devtools还可以更容易:


Rei*_*son 6

看一下?insertSource,这是R 2.12.0中的一个新功能,以及该帮助页面的另请参见部分中的其他功能.另外,请检查?assignInNamespace您的包是否具有命名空间.

以上假设您正在讨论更新和调试R源代码,而不是编译代码.

我通常使用该source()路由来加载我正在改进/调试的新版本的函数,以及通常的R调试工具.但是我还没有在我的包中找到命名空间.多年来,我的手指已经习惯了C-c C-lemacs + ess中的键绑定来寻找缓冲区.


小智 5

您可能想看一下'mvbutils'包.我一直用它来实时编辑我的包; 我可以在加载包时添加,删除和编辑功能和文档,并且更改会反映在已加载的版本中,在已安装的版本中(因此它们将保留在下一个R会话中),以及[当我告诉时]它在"源包"中.当我想将压缩版本分发给其他人时,我只通过R CMD重新构建.为了测试代码,我使用'debug'包,它在加载的包上工作正常.

我甚至使用'mvbutils'来编辑'mvbutils',有时可能会有些毛茸茸.

'mvbutils'文档可以真正完成此操作的完整演示,但理论上现有的doco应该向您展示如何继续.

无法帮助你使用Emacs,对不起......