Проблемы сохранения рабочего пространства в 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()