で可変キャプションを使用して一連のテーブルまたはグラフィックを作成する簡単な方法があるかどうか疑問に思っていますknitr
。私が知っている唯一の方法はこれです:( https://github.com/yihui/knitr-examples/blob/master/075-knit-expand.Rnwから簡略化されています)。しかしsrc
、任意のデータセットからそのようなループを生成する関数を記述したいので、出力を収集してループの後に出力するのはドラッグです。
\documentclass{article}
\title{Using knit\_expand() for templates}
\author{Yihui Xie}
\begin{document}
\maketitle
\tableofcontents
<<lm-mtcars, tidy.opts=list(width.cutoff=55)>>=
# the template
tpl = c("\\subsection{Regression on {{xvar}}}",
"<<lm-{{xvar}}>>=",
"lm(mpg~{{xvar}}, data=mtcars)",
"@")
# expand to knitr source and pass to knit()
src = lapply(names(mtcars)[-1], function(xvar) {knit_expand(text = tpl)})
@
\Sexpr{knit(text = unlist(src))}
\end{document}
したがって、代わりに実行できるようにしたいのは、次のようなものです。
\documentclass{article}
\title{Using knit\_expand() for templates}
\author{Yihui Xie}
\begin{document}
\maketitle
\tableofcontents
<<lm, tidy.opts=list(width.cutoff=55)>>=
myLfFun=function(dataset){
... some function definition which produces say an lm for each variable in dataset ...
}
@
\Sexpr{myLfFun(Titanic}
...
\Sexpr{myLfFun(mtcars}
... etc
\end{document}
... brew()を実行すると、...が生成されます。
\documentclass{article}
\title{Brew + knitR}
\author{Ramnath Vaidyanathan}
\begin{document}
\maketitle
\tableofcontents
<<lm-cyl >>=
lm(mpg ~ cyl, data = mtcars)
@
<<lm-disp >>=
lm(mpg ~ disp, data = mtcars)
@
<<lm-hp >>=
lm(mpg ~ hp, data = mtcars)
@
<<lm-drat >>=
lm(mpg ~ drat, data = mtcars)
@
<<lm-wt >>=
lm(mpg ~ wt, data = mtcars)
@
<<lm-qsec >>=
lm(mpg ~ qsec, data = mtcars)
@
<<lm-vs >>=
lm(mpg ~ vs, data = mtcars)
@
<<lm-am >>=
lm(mpg ~ am, data = mtcars)
@
<<lm-gear >>=
lm(mpg ~ gear, data = mtcars)
@
<<lm-carb >>=
lm(mpg ~ carb, data = mtcars)
@
((... same for Titanic database ...))
\end{document}
...そしてこれの出力は私がそれからknit2pdf()することができました。したがって、テンプレートがtmpl.Rnwと呼ばれる場合、brew('tmpl.Rnw'、'doc.Rnw'); knit2pdf('doc.Rnw)を実行します。