Stephan Kolassa <Stephan.Kolassa <at> gmx.de> writes: > > I would like to loop over a medium amount of Sweave code, including both R and LaTeX chunks. Is there any way to
Stephan noted that \newcommand was not expanded, so after re-reading I realized that my comment was a bit short. After all, when I had encountered the problem the first time, I remember some headaches when thinking about the hen and the egg. Below is a full example. The trick is to generate the newcommand and parameter with R. This method is especially helpful when you have a dozen or so of laboratory parameter that all have to be plotted, tabled, tested between groups, and summarized. I write the chapter only once, when I works I wrap everything with a newcommand. Default Sweave figure creation is not possible, but doing it explicitely with a pdf/dev.off is not much more complicated. Dieter % ---------------------------------- \documentclass{article} % \usepackage{Sweave} \SweaveOpts{echo=FALSE} \newcommand\bloodp[3]{ \subsection{Patient #1} For patient #1, the mean value of systolic pressure was #2~mmHg, the diastolic pressure was #3~mmHg. \begin{figure}[!htb]% \begin{center}% \includegraphics{histo#1}% \caption{Histogram of systolic blood pressure for patient #1.}% \label{fig:histo#1}% \end{center}% \end{figure}% \clearpage % Better use FloatBarrier here } \begin{document} \section{Blood Pressure} <<results=tex>>= n=100 dt = data.frame(subj=sample(1:3,n,TRUE), syst=round(rnorm(n,120,10)),dia=round(rnorm(n,80,10))) # could also use tapply here for (i in 1:3) { dt1 = dt[dt$subj==i,] cat("\\bloodp{",i,"}{", round(mean(dt1$syst)),"}{", round(mean(dt1$dia)),"}\n",sep="") pdf(paste("histo",i,".pdf",sep="")) hist(dt1$syst,main="",xlab="Blood pressure") dev.off() } @ \end{document} ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.