在调试一些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文档中重现某些错误。如果有人对该特定应用有所了解,我们将不胜感激。
答案 0 :(得分:6)
save(list=ls(), file="mylocals.Rda")
我必须克服的障碍才能意识到这是save
中该论点的名称。为什么作者使用参数名称“list”,它是一个字符向量(而不是列表)?同样的呜呜声适用于rm
函数参数名称。