reportes - Escribiendo grandes documentos con Sweave. ¿Es posible hacer lo mismo con LaTeX?
rstudio latex (3)
Esto es lo que funciona muy bien para mí:
Tengo un archivo maestro ("master.Rnw") que no tiene texto pero solo sirve para recopilar los archivos (capítulos, secciones) que forman el documento al final.
Luego tengo un archivo con código R que se está reutilizando en otros archivos ("func.Rnw"). Aquí, tengo muchos trozos con nombre
<<my_fun_1,eval=FALSE,echo=FALSE>>=
# code:
c <- a * b
@
En master.Rnw, lo primero que hago después de / begin {document} es
/SweaveInput{func.Rnw}
y desde allí, tengo mis trozos con nombre disponibles. En un archivo "chap1.Rnw" ahora puedo tener
<<echo=FALSE>>=
a <- 10
b <- 25
<<my_fun_1>>
c
@
Claro que tengo que
/SweaveInput{chap1.Rnw})
en master.Rnw.
Solo tengo que /Sweave{master.Rnw}
y luego pdflatex el archivo master.tex resultante, sin copiar / pegar o procesar múltiples archivos.
Solo estoy escribiendo un documento de más de 60 páginas con aproximadamente 25 tablas y figuras y todo funciona perfectamente bien hasta el momento.
Espero que esto ayude, Rainer
Solo estoy descubriendo Sweave
y R
He visto algunos ejemplos de documentos de Sweave
y también he comenzado a escribir uno o dos por mi cuenta. Estoy impresionado por la capacidad de hacer cálculos en R
y generar resultados directamente en un documento LaTeX
.
Ahora estoy pensando en documentos más grandes (como usualmente tenemos con LaTeX
) que constan de varias páginas y varias partes. Con LaTeX
(yo uso WinEdt), establezco un documento principal (p main.tex
Ej. main.tex
) y luego tengo otros documentos subsidiarios como introduction.tex
, main.tex
etc.
Mi pregunta es: ¿Podemos hacer esto con Sweave
también? Ahora estoy trabajando con un solo documento de Sweave
(.Rnw) solo. ¿Podemos tener varios documentos de Sweave
(con uno principal y secundario) como normalmente hacemos con LaTeX
?
Una solución alternativa sería tener archivos Sweave
separados y luego usarlos para producir los trozos R
LaTeX
que pueden copiarse a un documento LaTeX
, pero luego la idea parece bastante ineficiente y requiere mucho tiempo.
Por favor, haznos saber qué sugerencias y soluciones tienes.
Muchas gracias...
Estoy usando Sweave para escribir un libro con unos 16 capítulos. Estoy de acuerdo en que usar un makefile con varios archivos Rnw es una buena idea. Otra cosa buena sobre este enfoque es que make puede ejecutarse en paralelo (creo que -p), por lo que, dependiendo de cómo los objetos del capítulo dependen unos de otros, puede ejecutar una gran cantidad de código simultáneamente.
Lo que ha hecho una diferencia para mí es el almacenamiento en caché. Varios de mis fragmentos de código pueden ejecutarse durante días, pero no han cambiado en el transcurso de la escritura del libro. Hay algunos paquetes que le permiten guardar los resultados cuando se ejecuta y solo volver a ejecutar el fragmento si los objetos de los que depende el fragmento han cambiado.
Hay algunos paquetes para hacer esto. Ver:
http://cran.r-project.org/web/views/ReproducibleResearch.html
Utilizo el paquete tejedor de bioconductor.
Mientras estoy en un volcado de cerebro ... si tiene más de un autor, descubrí que una cuenta compartida de Dropbox es una excelente manera de mantener el proyecto.
Max
Recomiendo usar RStudio ( http://www.rstudio.com/ide/ ) en lugar de WinEdt. Sweave está muy bien integrado en ese IDE y, como en WinEdt, puedes establecer un archivo como archivo maestro. Desde el archivo maestro puede incluir archivos secundarios usando
/SweaveInput{Child.Rnw}
Puede vincular un archivo secundario al archivo maestro incluyendo la directiva
% !Rnw root = Master.Rnw
en el archivo hijo. De esa manera, cuando trabaje en un archivo secundario y lo escriba, RStudio sabe cómo componer el archivo maestro.
Los detalles se explican en la documentación de RStudio en http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files
La mejor característica es que la navegación del registro de errores de Synctex y TeX todavía funciona incluso cuando se trabaja con documentos de varios archivos.