How to specify figure names when `knit`ting with `fig.keep='all'`
knitr, r
Solution
Good question. Not sure if this could be a satisfactory answer:
\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}
In your case, you only need to decide which specimen to go into `s`.
Problem
I'm using `knitr` to generate reports. However, I often first prepare "internal" documents which contain all plots, and then for a final report or paper want to include only some of the figures. Say, I have a set of systematically produced figures, say I loop over my specimen: ``` <<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]) @ ``` This will produce a number of files `figures/sample1.pdf`, `figures/sample2.pdf`, etc. While the numbering with 1, 2, ... is good for the knitr-generated report, if I want to include one of the plots in a paper it is cumbersome and error prone to find out which .pdf belongs to which sample. How can I tell `knitr` to use file names like `"figures/sample-436a.pdf"`? I tried `<<fig.path = sprintf ("figures/sample-%s", s)>>=`, but that doesn't work: `s` is unknown, so I guess `fig.path` is evaluated right at the beginning of the chunk processing, not when saving the chunk. PS: One obvious way to reduce the risk of errors are titles, but that is IMHO ugly in a paper.