保存工作区图像,在R中。

16

在结束 R 会话时关闭 R Studio,会通过对话框询问:“将工作区图像保存到[工作目录]?”

这是什么意思?如果我选择保存工作区图像,它保存在哪里?我总是选择不保存工作区图像,有没有保存的缺点?

我查看了 stackoverflow,但没有找到解释这个问题的帖子。我只发现一个关于如何禁用提示的问题(没有简单的答案...):如何在R中禁用“保存工作区图像”提示?


1
工作区图像是您当前环境的副本,其中包括用户定义的任何内容,从数据框到函数。如果您是R的新手,我建议访问https://www.statmethods.net/interface/workspace.html。 - David Weber
我的回答位于 https://dev59.com/mW445IYBdhLWcg3wLXSh#67016157,同时包括我的 LI 帖子链接,其中 https://www.linkedin.com/feed/update/urn:li:activity:6786156716447830016?utm_source=linkedin_share&utm_medium=member_desktop_web 将回答您所有与保存/不保存工作区图像相关的问题。 - Dr Nisha Arora
3个回答

19
这是什么意思?
这意味着R将对象列表保存在您的全局环境中(即您的正常工作区域),保存到文件中。当R下次加载时,默认情况下会恢复此列表(至少部分恢复-有时不起作用)。
其结果是,重新启动R不会给你一个干净的状态。相反,您的工作区被现有的东西所淹没,这通常不是您想要的。人们因此采用各种各样的方法来清理他们的工作区。但这些技巧都不可靠,如果您简单地不保存/恢复工作区,则没有必要使用它们。
如果我选择保存工作区图像,它保存在哪里?
R在您当前的工作目录中创建一个(隐藏的)名为“.RData”的文件。
我总是选择不保存工作区图像,保存它有什么缺点吗?
优点是,在某些情况下,当您以后继续工作时,可以避免重新计算结果。然而,有其他更好的方法来实现这一点。另一面,以非干净状态启动R有许多缺点:任何您现在开始的新分析都不会在一个干净的房间中进行,并且在再次执行时也无法重现。

你没有保存工作区是正确的做法!这是创建可重现 R 代码的规则之一。如需更多信息,建议查看 Jenny Bryan 的有关使用 项目导向工作流的文章。

但每次手动拒绝保存工作区既麻烦又容易出错。你可以在 RStudio 选项中禁用对话框,详情请参见此处


2
工作空间将包括您保存的任何对象,例如数据框,矩阵,函数等。
将其保存到您的工作目录中,可以让您在下次打开RStudio时将其加载回来,以便您可以继续上次离开的地方。如果您可以从脚本重新创建所有内容,并且如果您的脚本不需要长时间运行,则没有真正的劣势。

1
“没有真正的劣势” — 不,实际上有非常明显的劣势。事实上,普遍的建议是永远不要保存工作区,因为它既不必要,又会导致无法重现的状态和难以诊断的错误。 - Konrad Rudolph

-1

我要补充的是,你应该认真考虑到有些人可能正在进行长期项目,即那些不能一天完成的事情,因此必须保存他们的工作区图像,以避免再次从头开始。

我认为,最佳实践是:保存您的工作区没问题,但只有在可以清除整个工作区并完全重新运行代码而没有错误的情况下,您的代码才真正有效!


将工作区图像保存是基本上错误的方法,在我能想到的所有情况下都是相当糟糕的建议。首先,您绝对不需要在一天结束时关闭项目 - 让它保持运行!其次,“从头开始”根本不是问题,如果您已经保存了代码(显然应该始终这样做),除非该代码运行时间非常长。如果是这种情况,中间结果应始终通过显式方式进行保存和恢复,而不是通过RStudio选项进行保存和恢复,以确保代码可重现。 - Konrad Rudolph
总之,声称你必须保存你的工作空间是绝对错误的:这从来不是必要的。而且,更重要的是,它从来不比以不同的方式解决问题更好:在我的经验和大多数R专家的经验中,这从来不合适(启用该选项从未超过该选项创建的重大问题;即使RStudio的作者也同意这一点,而这个不明智的选项仍然存在的唯一原因是向后兼容性)。 - Konrad Rudolph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接