R

Hvordan kombinere to RMarkdown (.Rmd) filer til en enkelt utgang?

How Combine Two Rmarkdown



Løsning:

August 2018 oppdatering: Dette svaret ble skrevet før advent av bookdown , som er en kraftigere tilnærming til å skrive Rmarkdown -baserte bøker. Sjekk det minimale bookdown eksempel i @Mikey-Harpers svar!

Når jeg vil dele en stor rapport i separat Rmd, oppretter jeg vanligvis en overordnet Rmd og inkluderer kapitlene som barn. Denne tilnærmingen er enkel for nye brukere å forstå, og hvis du inkluderer en innholdsfortegnelse (toc), er det enkelt å navigere mellom kapitler.



rapport.Rmd



--- tittel: Min rapportutgang: pdf_document: toc: ja --- `` {r child = 'Chapter1.Rmd'} `` `` {r child = 'Chapter2.Rmd'} `` ''

Chapter1.Rmd



# Kapittel 1 Dette er kapittel 1. `` {r} 1 ''

Chapter2.Rmd

# Kapittel 2 Dette er kapittel 2. `` {r} 2 ''

Bygge

rmarkdown :: render ('report.Rmd')

Som produserer: skriv inn bildebeskrivelse her



Og hvis du vil ha en rask måte å lage biter for dine barns dokumenter:

rmd<- list.files(pattern = '*.Rmd', recursive = T) chunks <- paste0('```{r child = '', rmd, ''}
```
') cat(chunks, sep = '
') # ```{r child = 'chapter1.Rmd'} # ``` # # ```{r child = 'chapter2.Rmd'} # ```   

Jeg vil anbefale at folk bruker bookdown pakke for å lage rapporter fra flere R Markdown -filer. Det legger til mange nyttige funksjoner som kryssreferanser som er veldig nyttige for lengre dokumenter.

Tilpasse eksemplet fra @Eric , her er et minimalt eksempel på bookdown oppsett. Hoveddetaljen er at hovedfilen må kallesindex.Rmd, og må inkludere den ekstra YAML -linjennettsted: bookdown :: bookdown_site:

indeks.Rmd

--- tittel: 'A Minimal bookdown document' nettsted: bookdown :: bookdown_site output: bookdown :: pdf_document2: toc: ja ---

01-intro.Rmd :

# Kapittel 1 Dette er kapittel 1. `` {r} 1 ''

02-intro.Rmd :

# Kapittel 2 Dette er kapittel 2. `` {r} 2 ''

Hvis vi strikkerindeks.Rmd bookdown vil slå sammen alle filene i samme katalog i alfabetisk rekkefølge (denne oppførselen kan endres ved hjelp av en ekstra_bookdown.yml -filen).

Når du har blitt komfortabel med dette grunnleggende oppsettet, er det enkelt å tilpasse nedlastingsdokumentet og utdataformatene ved hjelp av flere konfigurasjonsfiler, dvs._bookdown.yml og_output.yml

Videre lesning

  • R Markdown: The definitive Guide: Chapter 11 gir en flott oversikt over bookdown
  • Å skrive bøker med bookdown gir en omfattende guide om bookdown, og anbefales for mer avanserte detaljer.

Dette fungerte for meg:

Rmd_bind<- function(dir = '.', book_header = readLines(textConnection('---
title: 'Title'
---'))) { old 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 = '
', file = 'book.Rmd', append = T) } render('book.Rmd', output_format = 'pdf_document') setwd(old) }  

Tenk at det er en bedre løsning, og det ville være fint å ha noe slikt i rmarkdown eller strikkepakker.