同じフォルダーにchapter1.Rmdとchapter2.Rmdの2つのファイルがあり、次の内容が含まれています。
chapter1.Rmd
_---
title: "Chapter 1"
output: pdf_document
---
## This is chapter 1. {#Chapter1}
Next up: [chapter 2](#Chapter2)
_
chapter2.Rmd
_---
title: "Chapter 2"
output: pdf_document
---
## This is chapter 2. {#Chapter2}
Previously: [chapter 1](#Chapter1)
_
これらを組み合わせて単一のpdf出力にまとめるにはどうすればよいですか?
もちろん、render(input = "chapter1.Rmd", output_format = "pdf_document")
は完全に機能しますが、render(input = "chapter1.Rmd", input = "chapter2.Rmd", output_format = "pdf_document")
は機能しません。
なぜこれをしたいのですか? 巨大文書 を論理ファイルに分割します。
@hadleyの bookdown パッケージを使用して.Rmdからlatexをビルドしましたが、これはこの特定のタスクには過剰すぎるようです。不足しているknitr/pandoc/linuxコマンドラインを使用した簡単な解決策はありますか?ありがとう。
2018年8月更新:この回答は、bookdownの出現前に書かれました、Rmarkdownベースの本を書くためのより強力なアプローチです。 @ Mikey-Harperの answer !の最小bookdownの例を確認してください。
大きなレポートを個別のRmdに分割する場合、通常は親Rmdを作成し、チャプターを子として含めます。このアプローチは、新しいユーザーが理解しやすいものであり、目次(toc)を含めると、章間を簡単に移動できます。
report.Rmd
---
title: My Report
output:
pdf_document:
toc: yes
---
```{r child = 'chapter1.Rmd'}
```
```{r child = 'chapter2.Rmd'}
```
chapter1.Rmd
# Chapter 1
This is chapter 1.
```{r}
1
```
chapter2.Rmd
# Chapter 2
This is chapter 2.
```{r}
2
```
ビルド
rmarkdown::render('report.Rmd')
生成するもの:
子ドキュメントのチャンクをすばやく作成する方法が必要な場合:
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'}
# ```
複数のR Markdownファイルからレポートを作成するには、bookdownパッケージを使用することをお勧めします。相互参照のような、より長いドキュメントに非常に役立つ多くの便利な機能が追加されます。
@ Ericの例を適用して、bookdownセットアップの最小限の例を示します。主な詳細は、メインファイルの名前はindex.Rmd
、追加のYAML行を含める必要があります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
```
index.Rmd
bookdownは、同じディレクトリ内のすべてのファイルをアルファベット順にマージします(この動作は、追加の_bookdown.yml
ファイル)。
この基本的な設定に慣れたら、追加の設定ファイルを使用してブックダウンドキュメントと出力形式を簡単にカスタマイズできます。つまり、_bookdown.yml
および_output.yml
さらに読む
- R Markdown:決定的なガイド :第11章では、ブックダウンの概要を説明しています。
- bookdownを使用してブックを作成する は、ブックダウンに関する包括的なガイドを提供し、より詳細な情報が必要な場合に推奨されます。
これは私のために働いた:
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)
}
より良い解決策があり、rmarkdownまたはknitrパッケージでこのようなものを持っているといいでしょう。