在调试一些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()
并对生成的dump.frames
分类对象调用debugger()
,但我仍然必须在调试浏览器内交互式地工作。我真正想要的只是一个包含上述18个对象的.RData
文件。所有这些的目的是在R Markdown文档中复现某些错误。如果有人对该特定应用程序有想法,将不胜感激。
.Rmd
文件与调试浏览器进行交互。当recover()
要求我"输入帧编号或0退出"时,我该如何将其写入.Rmd
文件中?生成的.html
文件显示错误并继续执行下一行代码。请参见这个代码片段。 - Zoë Clark