Solución:
Actualización de agosto de 2018: Esta respuesta fue escrita antes del advenimiento de bookdown, que es un enfoque más poderoso para escribir libros basados en Rmarkdown. Mira lo mínimo bookdown ejemplo en la respuesta de @ Mikey-Harper!
Cuando quiero dividir un informe grande en Rmd separados, normalmente creo un Rmd padre e incluyo los capítulos como hijos. Este enfoque es fácil de entender para los nuevos usuarios, y si incluye una tabla de contenido (toc), es fácil navegar entre los capítulos.
report.Rmd
---
title: My Report
output:
pdf_document:
toc: yes
---
```{r child = 'chapter1.Rmd'}
```
```{r child = 'chapter2.Rmd'}
```
capítulo1.Rmd
# Chapter 1
This is chapter 1.
```{r}
1
```
capítulo2.Rmd
# Chapter 2
This is chapter 2.
```{r}
2
```
Construir
rmarkdown::render('report.Rmd')
Que produce:
Y si desea una forma rápida de crear los fragmentos para los documentos de su hijo:
rmd <- list.files(pattern = '*.Rmd', recursive = T)
chunks <- paste0("```{r child = '", rmd, "'}n```n")
cat(chunks, sep = 'n')
# ```{r child = 'chapter1.Rmd'}
# ```
#
# ```{r child = 'chapter2.Rmd'}
# ```
Recomendaría que la gente use el bookdown paquete para crear informes a partir de varios archivos de R Markdown. Agrega muchas características útiles como referencias cruzadas que son muy útiles para documentos más largos.
Adaptando el ejemplo de @Eric, aquí hay un ejemplo mínimo de bookdown configuración. El detalle principal es que el archivo principal debe llamarse index.Rmd
y debe incluir la línea YAML adicional site: bookdown::bookdown_site
:
index.Rmd
---
title: "A Minimal bookdown document"
site: bookdown::bookdown_site
output:
bookdown::pdf_document2:
toc: yes
---
01-intro.Rmd:
# Chapter 1
This is chapter 1.
```{r}
1
```
02-intro.Rmd:
# Chapter 2
This is chapter 2.
```{r}
2
```
Si tejemos el index.Rmd
bookdown fusionará todos los archivos en el mismo directorio en orden alfabético (este comportamiento se puede cambiar usando un extra _bookdown.yml
expediente).
Una vez que se sienta cómodo con esta configuración básica, es fácil personalizar el documento bookdown y los formatos de salida utilizando archivos de configuración adicionales, es decir _bookdown.yml
y _output.yml
Otras lecturas
- R Markdown: la guía definitiva: el capítulo 11 proporciona una gran descripción general de bookdown
- La creación de libros con bookdown proporciona una guía completa sobre bookdown y se recomienda para obtener detalles más avanzados.
Esto funcionó para mí:
Rmd_bind <-
function(dir = ".",
book_header = readLines(textConnection("---ntitle: 'Title'n---")))
{
old <- setwd(dir)
if(length(grep("book.Rmd", list.files())) > 0){
warning("book.Rmd already exists")
}
write(book_header, file = "book.Rmd", )
cfiles <- list.files(pattern = "*.Rmd", )
ttext <- NULL
for(i in 1:length(cfiles)){
text <- readLines(cfiles[i])
hspan <- grep("---", text)
text <- text[-c(hspan[1]:hspan[2])]
write(text, sep = "n", file = "book.Rmd", append = T)
}
render("book.Rmd", output_format = "pdf_document")
setwd(old)
}
Imagina que hay una solución mejor y sería bueno tener algo como esto en los paquetes rmarkdown o knitr.