Mi chiedo se esiste un modo semplice per produrre un gruppo di tabelle o elementi grafici con didascalie variabili in knitr
. L'unico modo che conosco è questo: (semplificato da https://github.com/yihui/knitr-examples/blob/master/075-knit-expand.Rnw). Ma è un trascinamento raccogliere l'output in src
e quindi stamparlo dopo il ciclo, perché voglio scrivere una funzione per produrre un tale loop da un dataset arbitrario.Loop con didascalie con knitr
\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}
Quindi quello che voglio essere in grado di fare, invece è qualcosa di simile:
\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}
... Che se mi sono imbattuto birra() su di esso produrrebbe ...
\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}
... e l'output di questo potrei quindi knit2pdf(). Quindi, se il modello fosse chiamato tmpl.Rnw, eseguirò brew ('tmpl.Rnw', 'doc.Rnw'); knit2pdf ('doc.Rnw)
Non capisco esattamente cosa mi stai chiedendo: vuoi "tabella variabile/figure didascalie" o "un ciclo per set di dati arbitrari"? In questo esempio non sei limitato a 'mtcars'. –
Grazie. Vorrei "una funzione per un set di dati arbitrario", che includerebbe un ciclo e aggiungerebbe le didascalie appropriate per ciascuna variabile. Io lavoro nella ricerca di sondaggi, quindi ho frequentemente set di dati molto ampi contenenti ciascuno blocchi di variabili correlate che hanno tutti bisogno di essere processati in modo simile (mostra istogrammi e tabelle per ogni variabile nel blocco, ecc.). Ho pensato che questo fosse un caso frequente per Knitr? –