Как и вы, я предпочитаю «внешний буфер кода», но часто нужно использовать .Rmd или другие форматы. К счастью, и knitr
, и rmarkdown
поддерживают разметку в буфере кода R. См. здесь для (устаревшего) вступления, чтобы "раскрутить" ваш код R.
В любом случае, формат в основном просто уценка после ##'
комментариев (двойной га sh с цитатой) с некоторой информацией заголовка yaml как в файлах Rmd, например. следующее может быть выполнено в виде чистого кода R,
##' ---
##' title: "Foo"
##' output:
##' html_document:
##' toc: TRUE
##' author: Me
##' ---
##- r setup, include=FALSE -------------------------------------------------
library(ggplot2)
knitr::opts_chunk$set(echo = TRUE)
## /* end r setup */
##' # A header
##' a code block
##- blk1 -------------------------------------------------------------------
dat <- data.frame(x=sample(10, 10), y=runif(10))
## /* end blk1 */
##' # Another section
##' A code block w/ image
##- img, fig.width=9, fig.height=4 ----------------------------------------
plot(y ~ x, data=dat, type='l')
## /* end sem */
##' # Next section
##' etc.
и преобразовано в Rmd с knitr::spin("<filename.R>", knit=FALSE)
, или преобразовано в HTML (как указано выше) с помощью rmarkdown::render("<file.R>")
.
Лично я бы упростил генерацию файлов с помощью Makefile (убедитесь, что это вкладки), например. и для рендеринга, и для создания Rmd,
foo.html: foo.R
rscript -e "knitr::spin(\"$^\", knit=FALSE); \
rmarkdown::render(\"$^\", \"all\")"
В качестве альтернативы, для компиляции можно использовать команды из Emacs и т. д. c.