동일한 폴더에 chapter1.Rmd 및 chapter2.Rmd라는 두 개의 파일이 있으며 다음 내용이 있습니다.
챕터 1. 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")
그렇지 않습니다.
왜 이렇게해야합니까? 거대한 문서 를 논리 파일로 나누는 것 .
.Rmd 에서 라텍스를 빌드하기 위해 @hadley 의 bookdown 패키지를 사용했지만 이것은이 특정 작업에 과잉 인 것처럼 보입니다. 내가 놓친 knitr / pandoc / linux 명령 줄을 사용하는 간단한 솔루션이 있습니까? 감사.
답변
2018 년 8 월 업데이트 : 이 답변은 Rmarkdown 기반 책을 작성하는보다 강력한 접근 방식 인 bookdown 의 출현 이전 에 작성되었습니다. @ Mikey-Harper의 답변 에서 최소한의 bookdown 예제를 확인하십시오 !
큰 보고서를 별도의 Rmd로 나누고 싶을 때 일반적으로 부모 Rmd를 만들고 장을 자식으로 포함합니다. 이 접근 방식은 새로운 사용자가 이해하기 쉬우 며 목차 (toc)를 포함하면 장 사이를 쉽게 이동할 수 있습니다.
report.Rmd
---
title: My Report
output:
pdf_document:
toc: yes
---
```{r child = 'chapter1.Rmd'}
```
```{r child = 'chapter2.Rmd'}
```
챕터 1. 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 의 예제를 적용하여 여기에 북 다운 설정 의 최소 예제가 있습니다. 주요 세부 사항은 기본 파일이 호출 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
```
Knit 경우 index.Rmd
bookdown 은 동일한 디렉토리의 모든 파일을 알파벳 순서로 병합합니다 (이 동작은 추가 _bookdown.yml
파일을 사용하여 변경할 수 있음 ).
이 기본 설정으로 편안하게되면, 추가 구성 파일, 즉 사용하여 bookdown 문서 및 출력 형식을 사용자 정의 할 수 간단 _bookdown.yml
하고_output.yml
추가 읽기
- R Markdown : 결정적인 가이드 : 11 장에서는 북 다운에 대한 훌륭한 개요를 제공합니다.
- bookdown을 사용 하여 책을 저작하면 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 패키지에 이와 같은 것을 갖는 것이 좋을 것이라고 상상해보십시오.