使用`fig.keep ='all'`编织时如何指定图名

cbe*_*ica 5 r knitr

我正在knitr用来生成报告.但是,我经常首先准备包含所有情节的"内部"文件,然后对于最终报告或纸张只想包含一些数字.

说,我有一套系统生成的数字,说我循环我的标本:

<<sample, fig.keep = 'all'>>=
specimen <- c("436a", "783a", "10b")
for (s in specimen) # in reality it would e.g. be levels (specimen)
   plot (results [s])
@
Run Code Online (Sandbox Code Playgroud)

这将产生许多文件figures/sample1.pdf,figures/sample2.pdf等等.虽然编号为1,2,...对于针织生成的报告是好的,如果我想在纸张中包含其中一个图表,那么它很麻烦并且容易出错找出哪个.pdf属于哪个样本.

如何判断knitr使用文件名"figures/sample-436a.pdf"

我尝试过<<fig.path = sprintf ("figures/sample-%s", s)>>=,但这不起作用:s未知,所以我猜fig.path是在块处理开始时评估,而不是在保存块时.

PS:减少错误风险的一个显而易见的方法是标题,但这是恕我直言,在纸上丑陋.

Yih*_*Xie 5

好问题.不确定这是否是一个令人满意的答案:

\documentclass{article}

\begin{document}

<<prepare-src, include=FALSE>>=
s = names(iris)[-5]
# construct the source document
src = sprintf('<<sample-%s>>=
hist(iris[,"%s"], col="gray", border="white")
@', s, s)
@

% evaluate the source
\Sexpr{knit(text = src)}

\end{document}
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您只需要决定要进入哪个样本s.