knitr: run all chunks in an Rmarkdown document
knitr, r, r-markdown, rstudio
Solution
Using `Run all chunks` is equivalent to:
- Create a temporary R file
- Use `knitr::purl` to extract all the R chunks into the temp file
- Use `source()` to run the file
- Delete the temp file
Like this:
tempR <- tempfile(fileext = ".R")
library(knitr)
purl("SO-tag-package-dependencies.Rmd", output=tempR)
source(tempR)
unlink(tempR)
But you will want to turn this into a function. This is easy enough, except you have to use `sys.source` to run the R script in the global environment:
runAllChunks <- function(rmd, envir=globalenv()){
tempR <- tempfile(tmpdir = ".", fileext = ".R")
on.exit(unlink(tempR))
knitr::purl(rmd, output=tempR)
sys.source(tempR, envir=envir)
}
runAllChunks("SO-tag-package-dependencies.Rmd")
Problem
I have an .Rmd document which knitr process just fine. I would like to run all the chunks in the document, so that I can explore the results in my R shell. In Rstudio there is an option to run all the chunks in the document, but I can't find a way to achieve the same effect in a simple R session (opened in my terminal). Is there a way to do this?