Usar bucles con knitr para producir múltiples informes en pdf ... necesito un poco de ayuda para ayudarme a superar la joroba

En primer lugar, debo admitir que soy muy nuevo en knitr y en el concepto de análisis reproducible, pero puedo ver su potencial para mejorar mi flujo de trabajo actual (que incluye mucho copiar y pegar en documentos de Word).

A menudo tengo que presentar varios informes por grupo (Hospital en este ejemplo) y dentro de cada hospital, puede haber muchos distritos diferentes en los que informo un resultado. Anteriormente ejecuté todos mis gráficos y análisis en R usando bucles, luego comenzó el trabajo de copiar / pegar; sin embargo, después de leer este post (¿Sweave puede producir muchos pdfs automáticamente?), y me dio la esperanza de poder saltar muchos pasos e ir directamente desde R para informar a través de Rnw / knitr.

Sin embargo, después de intentarlo, veo que hay algo que no está funcionando bien (ya que el entorno R en el Rnw no parece reconocer las variables de bucle que estoy tratando de transmitirle).

   ##  make my data
Hospital <- c(rep("A", 20), rep("B", 20))
Ward <- rep(c(rep("ICU", 10), rep("Medicine", 10)), 2)
Month <- rep(seq(1:10), 4)
Outcomes <- rnorm(40, 20, 5)
df <- data.frame(Hospital, Ward, Month, Outcomes)


##  Here is my current work flow-- produce all plots, but export as png and cut/paste
for(hosp in unique(df$Hospital)){
  subgroup <- df[ df$Hospital == hosp,]
  for(ward in unique(subgroup$Ward)){
    subgroup2 <- subgroup[subgroup$Ward == ward,]
    savename <- paste(hosp, ward)
    plot(subgroup2$Month, subgroup2$Outcomes, type="o", main=paste("Trend plot for", savename))
  }
}
# followed by much copy/pasting


##  Here is what I'm trying to go for using knitr 
library(knitr)
for (hosp in unique(df$Hospital)){
  knit("C:file.path\\testing_loops.Rnw", output=paste('report_', Hospital, '.tex', sep=""))
}

## With the following *Rnw file
## start *.Rnw Code
\documentclass[10pt]{article}
\usepackage[margin=1.15 in]{geometry}
<<loaddata, echo=FALSE, message=FALSE>>=
  Hospital <- c(rep("A", 20), rep("B", 20))
Ward <- rep(c(rep("ICU", 10), rep("Medicine", 10)), 2)
Month <- rep(seq(1:10), 4)
Outcomes <- rnorm(40, 20, 5)
df <- data.frame(Hospital, Ward, Month, Outcomes)
subgroup <- df[ df$Hospital == hosp,]
@

\begin{document}
<<setup, echo=FALSE >>=
  opts_chunk$set(fig.path = paste("test", hosp , sep=""))
@

Some infomative text about hospital \Sexpr{hosp}

<<plots, echo=FALSE >>=
  for(ward in unique(subgroup$Ward)){
    subgroup2 <- subgroup[subgroup$Ward == ward,]
    #     subgroup2 <- subgroup2[ order(subgroup2$Month),]
    savename <- paste(hosp, ward)
    plot(subgroup2$Month, subgroup2$Outcomes, type="o", main=paste("Trend plot for", savename))
  }
@
\end{document}


##  To be then turned into pdf with this
tools::texi2pdf("C:file.path\\report_A.tex", clean = TRUE, quiet = TRUE)

Después de intentar ejecutar mi fragmento de código knit () obtengo este error:

Error in file(con, "w") : invalid 'description' argument

Y cuando busco en el directorio donde se creó el archivo * .tex, puedo ver que se produjeron 2 gráficos en pdf del hospital A (ninguno para B) y ningún archivo * .tex específico del hospital para tejer en un archivo pdf. Gracias de antemano por cualquier ayuda que pueda ofrecer!

Respuestas a la pregunta(3)

Su respuesta a la pregunta