Проблемы сохранения рабочего пространства в R - PullRequest
0 голосов
/ 16 сентября 2018

Я работаю над проектом с довольно большим рабочим пространством.К сожалению, я не могу сохранить рабочее пространство, и оно зависает.Если у меня небольшая рабочая область, я могу сделать 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(), однако я не могу воссоздать этот пример, используя пример tidytext Шекспира, поэтому я не уверен, в чем проблема.

1 Ответ

0 голосов
/ 17 сентября 2018

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

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

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

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

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

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