R中工作空间背后的哲学是什么?

4
当我从某个目录启动R会话时,如果存在相应的工作区域,R会自动加载它。在我完成当前工作区后,我可以决定是否要修改(保存)当前工作区。这个逻辑很简单清晰。
但是,如果我从某个目录开始R并通过setwd()更改工作目录,我不明白的是会发生什么。据我所知,与新工作目录对应的工作区不会被“加载”。我仍然可以看到来自先前工作目录的变量和历史记录。为什么呢?
其次,当我退出R时,我将“新”工作目录对应的工作区图像替换为“旧”目录对应的工作区。我的理解正确吗?这种行为背后的逻辑是什么?我能从R会话切换到另一个工作区吗?

我们可以从菜单 工具 > 选项 中禁用项目/源文档/.RData的自动还原选项。保存环境作为项目时,当我们想回到上次使用的地方时非常方便。 - zx8754
1个回答

3

工作区存储在 .RData 文件中,并且在启动 R 时会自动从当前工作目录加载。但是工作目录本身(以及设置它的 setwd() 函数)与工作区无关。您可以通过明确指定任何 .RData 文件来加载任何工作区:

load("c:/project/myfile.RData")

或者

setwd("c:/project/")
load()

是的,因为setwd()在任何load()之后运行。 - user3710546
如果您使用Rstudio或statet并创建项目,则不必担心工作区。 - user1436187
1
RStudio询问您在退出之前是否希望保存工作区图像。个人而言,大多数时候我喜欢不保存工作区,因为当您使用大型数据集进行研究时,它很快变得庞大,需要很长时间和空间来保存和加载。 - cyberj0g
当我正确解释我的试验结果时,工作目录和工作空间并不完全“正交”(独立)。我发现当前工作空间的图像设置在我设置的工作目录中。假设我从目录test1启动了R,相应的工作空间已经自动加载,然后我使用setwd将工作目录值设置为test2,然后当我退出R时,当前工作空间保存在test2目录中。 - Roman
是的,在 R 启动或退出时调用的 save()load() 函数使用当前工作目录,但更改工作目录本身并不会导致任何工作区操作。 - cyberj0g

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