我在我的R脚本中包含了一个名为blotter的库,其中有一个错误。我是否有一种简单的方法来编辑源代码以尝试调试问题?
答案 0 :(得分:21)
查找trace
和browser
函数,它们是R中用于调试的基本工具。假设您要编辑函数foo
的来源,然后说
trace("foo",edit=TRUE)
将在编辑器中打开foo的源代码,供您更改。但是,这是用于交互式调试;包中的源文件不会更改。因此,一旦找到错误,您需要将更改的包源文件更改为永久性。
答案 1 :(得分:11)
此功能在R的开发版本(2010年7月16日)中实现:
r-devel增加了一个新设施,供作者试验 包。
我们的想法是将包源中的修改代码插入到 运行包而无需重新安装。所以人们可以改变,测试,改变, 等等。快速循环。
该机制是评估一些源代码文件,返回一个 环境对象,它是代码的快照。由此 环境,功能和方法可以插入到环境中 当前会话中的包。插入使用trace() 机制,所以原始代码可以恢复。
一步法版本是:
insertSource("mySourceFile.R", package = "myPackage", functions = "foo")
有关详细信息,请参阅此帖子:Inserting and testing revised functions in a package
答案 2 :(得分:3)
您对的问题我是否有一种简单的方法可以编辑源代码来尝试调试问题?有明显的答案:使用源代码,Luke!
blotter是R-Forge上的一个包,您可以从中获取blotter sources here。这是查看开源的标准方法,并可能帮助它修复错误。