5

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

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 文档中重现某些错误。如果有人对该特定应用程序有想法,将不胜感激。

4

1 回答 1

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

为了意识到这是前进的方向,我必须克服的障碍是那个论点的名称save。当它是字符向量(而不是列表)时,为什么作者使用参数名称“list”?同样的抱怨也适用于rm函数参数名称。

于 2013-08-02T18:11:22.347 回答