As of earlier this year, we are now automatically building binaries and pkgdown documentation for all rOpenSci packages. One issue we encountered is that some packages include vignettes that require some special tools/data/credentials, which are unavailable on generic build servers.
This post explains how to include such vignettes and articles in your package: https://ropensci.org/technotes/2019/12/08/precompute-vignettes/
Thanks for the article, @jeroenooms. I’ve already done this with GSODR and nasapower and have an updated version of the bomrang vignette waiting for the next release.
It’s a super-handy way to handle internet connectivity and/or long execution times in vignettes.
Interesting idea. I use a similar approach:
Pre-compute a model and save the output object (e.g., out, saved in out.rdata or so), then in markdown display the original code, but don’t run it (eval=F,include=T), and in actuality load the ‘out.rdata’ file, but don’t display it (eval=T,echo=F).
The problem with that is that if it’s MCMC draws, the out.rdata file takes up a lot of space, and you don’t really want to upload that to github or bitbucket.
Nice article @jeroenooms, it is maybe worth mentioning to clean up and add the
precompile.R and the
*.Rmd.orig files to
Thanks @jeroenooms for a nice article, a small addition - you can also run
purl next to
knit to have the vignette’s R code accessible to the users, like in a “normal” vignette:
knitr::purl("vignettes/longexample.Rmd.orig", output = "vignettes/longexample.R")
I think some clarification is needed about the last part, saving vignette figures.
With this method, it does not work to set
knitr::opt_chunks$set(fig.path = "vignettes/"), or to use the default
fig.path setting of
"figure/". Based on the example repo, I used
knitr::opt_chunks$set(fig.path = "vigfig-") in the vignette Rmds so that all figures got saved to the root project (package) directory with
vigfig- appended to the front of the file name, then moved them into
# Move figures into vignettes/ folder
figs <- list.files(pattern = "vigfig-")
fs::file_move(figs, fs::path("vignettes/", figs))