我正在开发一个包
当我调试特定功能或一组功能时,测试该功能的最佳方法是什么?
每次我想查看我的更改时,是否必须使用source('function.R')或R CMD build?
(关联emacs ess键绑定的额外功劳)
答案 0 :(得分:8)
另请参阅http://github.com/hadley/devtools/,它提供了一些工具来简化此任务。
例如,在对源代码进行更改后,使用函数install()
构建,安装和重新加载包:
library(devtools)
install("package_name")
devtools也更容易:
重新加载完整的包裹:
load_all("pkg")
使用roxygen2
创建或更新文档document("pkg")
运行/inst/test/
中的所有脚本:
test("pkg")
构建和R CMD检查:
check("pkg")
答案 1 :(得分:6)
查看?insertSource
,这是R 2.12.0中的新功能,以及该帮助页面的另请参阅部分中的其他功能。另外,如果您的包有名称空间,请查看?assignInNamespace
。
以上假设您正在讨论更新和调试R源代码,而不是编译代码。
我通常使用source()
路由加载我正在改进/调试的新版本的函数,以及常用的R调试工具。但是我还没有在我的包中找到命名空间。多年来,我的手指已经习惯了emacs + ess中的C-c C-l
键绑定来寻找缓冲区。
答案 2 :(得分:5)
您可能想查看'mvbutils'包。我一直用它来实时编辑我的包;我可以在加载包时添加,删除和编辑功能和文档,并且更改会反映在已加载的版本中,在已安装的版本中(因此它们将保留在下一个R会话中),以及[当我告诉时)它在“源包”中。当我想将压缩版本分发给其他人时,我只通过R CMD重新构建。为了测试代码,我使用'debug'包,它可以在加载的包上正常工作。
我甚至使用'mvbutils'来实时编辑'mvbutils',有时可能会有些毛茸茸。
“mvbutils”文档可以真正完成此操作的完整演示,但理论上现有的doco应该向您展示如何继续。
无法帮助你使用Emacs,对不起......
答案 3 :(得分:1)
我遇到了同样的问题,我在使用RStudio时解决了这个问题。
在编辑器中,我检查包含函数的R文件中的“保存时源”选项。因为我每次编辑时都习惯保存文件(我认为这是一个好习惯),在我的R工作区中加载的相应函数总是最新的。