【发布时间】:2017-06-20 14:36:09
【问题描述】:
我使用knitr 生成了一个动态文档。该文件使
广泛使用包的knit_expand() 函数
模板。这是由 MWE 说明的(基于谢一辉自己的
example 函数)。
-
主文档
knit-expand-MWE.Rnw\documentclass{article} \title{How to extract code when using\\ knit\_expand() for templates?}% \author{Knitr User} \begin{document} \maketitle \tableofcontents \newpage \section{Write one row of data} Only the first two sections are evaluated. <<run-all, include=FALSE>>= library(knitr) src = NULL for (i in 1:3) src = c(src, knit_expand('template.Rnw')) @ \Sexpr{paste(knit(text = src), collapse = '\n')} \end{document} -
主文档调用的模板
template.Rnw\subsection{Now i is {{i}}} This chunk is {{if (i > 2) 'not '}}evaluated. <<row-{{i}}, eval={{i <= 2}}>>= # row number {{i}} iris[{{i}}, ] @
我现在需要提取相应的 R 代码。运行purl("knit-expand-MWE.Rnw") 输出knit-expand-MWE.R,其中包括块中的代码以及对模板的引用:
## ----run-all, include=FALSE----------------------------------------------
library(knitr)
src = NULL
for (i in 1:3) src = c(src, knit_expand('template.Rnw'))
我想要的是相应的“扩展”代码(为了不使用knitr的同事的利益),例如:
## ----row-1, eval=TRUE----------------------------------------------
## row number 1
iris[1, ]
## ----row-2, eval=TRUE----------------------------------------------
## row number 2
iris[2, ]
## ----row-3, eval=FALSE----------------------------------------------
## row number 3
iris[3, ]
我怎样才能做到这一点?
【问题讨论】:
标签: r knitr dynamic-reports reproducible-research