Ns

2つのRMarkdown(.Rmd)ファイルを1つの出力に結合する方法は?



How Combine Two Rmarkdown



解決:

2018年8月の更新: この答えは、の出現前に書かれました ブックダウン 、これはRmarkdownベースの本を書くためのより強力なアプローチです。最小限をチェックしてください ブックダウン @Mikeyの例-ハーパーの答え!

大きなレポートを個別のRmdに分割する場合、通常は親Rmdを作成し、チャプターを子として含めます。このアプローチは、新しいユーザーにとって理解しやすく、目次(toc)を含めると、章間を簡単に移動できます。



report.Rmd

---タイトル:マイレポート出力:pdf_document:toc:yes --- `` `{r child = 'chapter1.Rmd'}` `` `` `{r child = 'chapter2.Rmd'}` ``

Chapter1.Rmd



#第1章これは第1章です。 `` `{r} 1` ``

Chapter2.Rmd

#第2章これは第2章です。 `` `{r} 2` ``

建てる

rmarkdown :: render( 'report.Rmd')

生成するもの: ここに画像の説明を入力してください



また、子ドキュメントのチャンクをすばやく作成する方法が必要な場合は、次のようにします。

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

私は人々が使用することをお勧めします ブックダウン 複数のRマークダウンファイルからレポートを作成するためのパッケージ。相互参照など、長いドキュメントに非常に役立つ多くの便利な機能が追加されています。

からの例を適応させる @エリック 、これはの最小限の例です ブックダウン 設定。主な詳細は、メインファイルを呼び出す必要があることですindex.Rmdであり、追加のYAML行を含める必要がありますサイト:bookdown :: bookdown_site:

index.Rmd

---タイトル: '最小限のブックダウンドキュメント'サイト:bookdown :: bookdown_site出力:bookdown :: pdf_document2:toc:はい---

01-intro.Rmd

#第1章これは第1章です。 `` `{r} 1` ``

02-intro.Rmd

#第2章これは第2章です。 `` `{r} 2` ``

私たちが編むならindex.Rmd ブックダウン 同じディレクトリ内のすべてのファイルをアルファベット順にマージします(この動作は、追加のファイルを使用して変更できます_bookdown.ymlファイル)。

この基本的な設定に慣れたら、追加の構成ファイルを使用して、ブックダウンドキュメントと出力形式を簡単にカスタマイズできます。_bookdown.ymlと_output.yml

参考文献

  • R Markdown:決定的なガイド:第11章では、ブックダウンの概要を説明しています。
  • ブックダウンを使用して本をオーサリングすると、ブックダウンに関する包括的なガイドが提供され、より高度な詳細が推奨されます。

これは私のために働いた:

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) }  

より良い解決策があると想像してみてください。rmarkdownまたはknitrパッケージにこのようなものがあると便利です。