使用 knit_expand() 从模板中提取 R 代码
extract R code from template using knit_expand()
我使用 knitr
生成了一个动态文档。该文件使
广泛使用包的 knit_expand()
功能
模板。 MWE(基于 Yihui Xie 自己的
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'))
我想要的是对应的"expanded"代码(方便不用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, ]
我怎样才能做到这一点?
您可以在 src
上 运行 purl()
,例如。 g.
purl(text = src, output = 'knit-expand.R')
我使用 knitr
生成了一个动态文档。该文件使
广泛使用包的 knit_expand()
功能
模板。 MWE(基于 Yihui Xie 自己的
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'))
我想要的是对应的"expanded"代码(方便不用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, ]
我怎样才能做到这一点?
您可以在 src
上 运行 purl()
,例如。 g.
purl(text = src, output = 'knit-expand.R')