Проблемы сохранения рабочего пространства в R

Я работаю над проектом с довольно большим рабочим пространством. К сожалению, я не могу сохранить рабочее пространство, и оно зависает. Если у меня есть небольшое рабочее пространство, я могу сделать 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 секунд, но прекрасно сохраняет сжатый файл.Rdata размером 116 МБ. Также если я попробую 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+ МБ / с диска и 2% (зависит от типа сжатия) ЦП, но даже через 15 минут он все еще работает save.image(), Также я вижу файлы.RdataTmp в каталоге и попробовал save.image(safe=F) но безрезультатно. Мне кажется странным, что после того, как я unnest_tokens() Я больше не могу использовать save.image()Однако, я не могу воссоздать этот пример, используя пример с тиканым текстом Шекспира, поэтому я не уверен, в чем проблема.

1 ответ

Я подозреваю, что вам может не понравиться мой ответ здесь, но, возможно, идеи в нем могут помочь вам так же, как они помогли мне! Проблема, с которой вы сталкиваетесь, заключается в том, чтобы конкретно продемонстрировать, что сохранение рабочего пространства R (в качестве способа отслеживания вашей работы или экономии времени) не очень подходит для рабочего процесса анализа данных.

Вместо того, чтобы работать с анализом, как если бы вы могли в любое время открыть рабочее пространство R ("реальная" вещь?) В каком-то не совсем известном состоянии, вы можете принять рабочий процесс, где ваш R-скрипт является "реальной" вещью). вы работаете, отслеживаете, сохраняете и т. д.

Цитировать из руководства ESS:

Исходный код настоящий. Объекты являются реализациями исходного кода. Источник для КАЖДОГО измененного пользователем объекта помещается в определенный каталог или каталоги для последующего редактирования и поиска.

Некоторые альтернативные привычки, заимствованные из отличного сообщения в блоге Дженни Брайан

  • Не сохраняй .RData когда вы выходите из R и не загружаете .RData когда вы начинаете R
  • Очень часто перезапускайте R и запускайте ваш скрипт сверху
  • Есть объект, который занимает много времени для создания? Напишите отдельный скрипт, который его создает, и сохраните объект в файл, используя saveRDS()
Другие вопросы по тегам