R, rmarkdown, cache and objects
This article is originally published at https://logfc.wordpress.com
If your rmarkdown takes hours to generate, and you want to be able to generate different document output types on the fly, using the output_format
option from rmarkdown::render
is extremely annoying: every time you change the output format, the cache is reset, so you need to wait hours to get the other format.
I found no clean solution to this problem, but here is an ugly hack. We create a copy of the document and render it. First time it will take hours, but then the cache will be separate from your original document:
file.copy("test.rmd", "test_html.rmd", overwrite=TRUE) rmarkdown::render("test_html.rmd")
Of course, this is annoying, and we can wrap this two commands with a function. But beware! Markdown by default evaluates in its parent environment, so to make sure it is evaluated in the global environment, you need to set an option. Here is a wrapper function which also opens by default the resulting document in google-chrome:
myrender <- function(fn, open=TRUE) { fb <- gsub("\\.rmd$", "", fn, ignore.case=TRUE) fn2 <- paste0(fb, "_html.rmd") file.copy(fn, fn2, overwrite=T) res <- render(fn2, output_format="html_document", envir=globalenv()) system(sprintf("google-chrome %s", res)) res }
Thanks for visiting r-craft.org
This article is originally published at https://logfc.wordpress.com
Please visit source website for post related comments.