在R中保存工作区(在特定框架中)进行事后调试

时间:2013-08-02 17:58:18

标签: r debugging r-markdown

在调试一些R代码时,我想将工作区(即所有当前对象)保存在某个特定的框架中,以便我可以在调试浏览器之外使用这些对象。按照this answer中给出的示例:

x <- 1:5
y <- x + rnorm(length(x),0,1)
f <- function(x,y) {
  y <- c(y,1)
  lm(y~x)
}

设置options(error = recover)并运行f(x,y)可让我们选择要输入的帧。在这里,我将选择2并使用ls()检查我的工作区,如下所示:

Browse[1]> ls()
 [1] "cl" "contrasts" "data" "formula" "m" "method" "mf" "model" "na.action" "offset" "qr"         
[12] "ret.x" "ret.y" "singular.ok" "subset" "weights" "x" "y"

我希望能够保存所有这些对象以便以后使用它们。在浏览器中使用save.image()或将其插入相关函数,可以保存最初调用的f(x,y)环境。我可以使用dump.frames()并在生成的debugger()分类对象上调用dump.frames,但我仍然需要在调试浏览器中以交互方式工作。我真正想要的是一个.RData文件,其中包含上面列出的18个对象。

所有这一切的重点是在R Markdown文档中重现某些错误。如果有人对该特定应用有所了解,我们将不胜感激。

1 个答案:

答案 0 :(得分:6)

save(list=ls(), file="mylocals.Rda")

我必须克服的障碍才能意识到这是save中该论点的名称。为什么作者使用参数名称“list”,它是一个字符向量(而不是列表)?同样的呜呜声适用于rm函数参数名称。