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

Надявам се този въпрос да е смислен и подходящ за тук:

По същество пиша код в рамките на Rmd файл, който включва симулация на рандомизиране на данни, което е много дълъг for цикъл. Този процес отнема доста време, за да завърши (>2 минути - това е голяма симулация). Съхранявам резултатите и след това ги използвам за анализиране и визуализиране по различни начини в целия Rmd отчет.

Въпреки това, когато създавам и редактирам отчета, може да искам да видя как редакциите на моя код и текст променят html изхода. Всеки път, когато изпълнявам командата knitr:html, трябва да преживея още 2 минути рандомизиране на данни. Това очевидно може да бъде разочароващо бавно.

Има ли начин за изпълнение на процеса for-loop веднъж извън 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