Импорт ранее сгенерированного объекта r в Rmarkdown

Я надеюсь, что этот вопрос имеет смысл и подходит для здесь:

По сути, я пишу код в файле Rmd, который включает симуляцию рандомизации данных, что является очень длинным циклом for. Этот процесс занимает довольно много времени (> 2 минут - это большая симуляция). Я сохраняю результаты, а затем использую их для анализа и визуализации различными способами в отчете Rmd.

Однако при создании и редактировании отчета мне может понадобиться посмотреть, как мои изменения кода и текста изменяют вывод html. Каждый раз, когда я выполняю команду yarnr:html, мне приходится ждать еще 2 минуты рандомизации данных. Очевидно, что это может быть удручающе медленным.

Есть ли способ выполнить цикл for один раз за пределами файла Rmd, сохранить результаты, а затем просто импортировать эти результаты в файл Rmd. Я почти уверен, что Rmd не может импортировать из глобальной среды. Интересно, знает ли кто-нибудь способ сделать это?


person jalapic    schedule 08.12.2014    source источник


Ответы (2)


Сохраните результаты моделирования в файл rds с помощью saveRDS. Затем добавьте вызов readRDS вверху файла Rmd. Возможно, вы захотите сделать это в блоке с echo = FALSE.

person Richie Cotton    schedule 08.12.2014

То, что вы пытаетесь сделать, это кэшировать результаты, полученные из каждого «куска».

Обратитесь к меню.

http://yihui.name/knitr/demo/cache/

Я надеюсь, что вы используете RStudio, кеширование намного проще

Альтернативно,

Проверьте использование IPython с R. https://www.google.com.au/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=using%20Ipython%20with%20R По умолчанию , все данные, сгенерированные в каждой ячейке в IPython (независимо от R/Python), будут кэшироваться в каждой ячейке и использоваться совместно между ячейками.

person biobirdman    schedule 08.12.2014
comment
Хороший вопрос, хотя, если это длинная симуляция, иметь более постоянный способ хранения результата, чем кэширование, является разумной идеей. - person Richie Cotton; 08.12.2014
comment
@RichieCotton Да, сохранение объекта R в виде файла .rds будет хорошо для больших объектов R или объектов, для создания которых требуется много времени. Им требуется больше времени, чтобы прочитать и записать файл .rds, а не просто сохранить его в памяти (например, что делает кеш). - person biobirdman; 08.12.2014