在R中保存工作空间的问题

问题描述 投票:0回答:1

我正在开发一个工作空间相当大的项目。不幸的是我无法保存工作区并冻结。如果我有一个小工作区,我可以用一个数据帧来做save.image()

>library(dplyr); library(tidyr);library(tidyverse);library(tidytext);library(pryr)
>master = readRDS("data")
> pryr::object_size(master)
527 MB
>save.image(safe=F)
> pryr::mem_used()
682 MB
> memory.limit()
[1] 8142

它需要10秒,但它保存116 MB压缩.Rdata文件就好了。此外,如果我尝试save.image(compress=F)它需要不到一秒钟。

> master_tidy = master %>% unnest_tokens(word, text)
> pryr::object_size(master_tidy)
565 MB
> pryr::mem_used()
758 MB

现在,如果我尝试运行save.image()save.image(compress=F),它将卡住,我必须终止R,因为停止请求也不起作用。如果我运行任务管理器,我确实看到当R卡住时它使用100+ MB / s磁盘和2%(取决于压缩类型)CPU,但即使在15分钟后它仍然运行save.image()。此外,我在目录中看到.RdataTmp文件,并尝试save.image(safe=F)无济于事。我发现奇怪的是,在我unnest_tokens()之后我不能再使用save.image(),但是我不能使用shakespear tidytext示例重新创建这个例子,所以我不确定问题是什么。

r save workspace tidytext
1个回答
0
投票

我怀疑你可能不喜欢我的答案,但也许它中的想法可以帮助你帮助我!您遇到的问题是以一种具体的方式证明,保存R工作区(作为跟踪工作或节省时间的方法)并不适合数据分析工作流程。

您可以采用您正在使用的工作流程where your R script is the "real" thing,跟踪,保存,而不是使用分析,就好像您可以在某个不太知名的状态下打开R工作区(“真实”的东西?)等等

引用ESS manual

源代码是真实的。对象是源代码的实现。每个用户修改对象的源都放在一个或多个特定目录中,以便以后编辑和检索。

Some alternative habits, borrowed from Jenny Bryan's excellent blog post

  • 退出R时不保存.RData并且在启动R时不加载.RData
  • 经常重启R并从顶部运行脚本
  • 有一个需要很长时间才能创建的对象吗?编写一个单独的脚本来创建它,并使用saveRDS()将对象保存到文件中
© www.soinside.com 2019 - 2024. All rights reserved.