programing

두 개의 RMarkdown(.Rmd) 파일을 단일 출력으로 결합하는 방법은 무엇입니까?

newsource 2023. 6. 14. 21:52

두 개의 RMarkdown(.Rmd) 파일을 단일 출력으로 결합하는 방법은 무엇입니까?

같은 폴더에 두 개의 파일이 있습니다. 1장입니다.Rmd와 2장.Rmd(다음 내용 포함):

제1장Rmd

---
title: "Chapter 1"
output: pdf_document
---

## This is chapter 1. {#Chapter1}

Next up: [chapter 2](#Chapter2)

제2장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의 북다운 패키지를 사용하여 라텍스를 만들었습니다.Rmd 하지만 이것은 이 특정 작업에 대한 과잉 살상인 것 같습니다.제가 빠진 knitr/pandoc/linux 명령줄을 사용한 간단한 솔루션이 있습니까?감사해요.

2018년 8월 업데이트:이 대답은 북다운이 등장하기 전에 쓰여졌는데, 이것은 R마크다운 기반의 책을 쓰는 더 강력한 접근법입니다.@Mikey-Harper의 답변에서 최소한의 북다운 예를 확인하십시오!

큰 보고서를 별도의 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
```

제2장Rmd

# Chapter 2

This is chapter 2.

```{r}
2
```

빌드

rmarkdown::render('report.Rmd')

다음을 생성하는 요소:My report

또한 하위 문서에 대한 청크를 빠르게 생성할 수 있는 방법이 필요한 경우:

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 마크다운 파일에서 보고서를 작성할 때 북다운 패키지를 사용하는 것을 추천합니다.상호 참조와 같은 많은 유용한 기능이 추가되어 더 긴 문서에 매우 유용합니다.

@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 - 인트로Rmd:

# Chapter 1

This is chapter 1.

```{r}
1
```

02- 인트로.Rmd:

# Chapter 2

This is chapter 2.

```{r}
2
```

우리가 뜨개질을 하면index.Rmd 북다운은 동일한 디렉토리에 있는 모든 파일을 알파벳 순서로 병합합니다(이 동작은 추가를 사용하여 변경할 수 있습니다)._bookdown.yml파일).

enter image description here

이 기본 설정이 익숙해지면 추가 구성 파일 등을 사용하여 북다운 문서 및 출력 형식을 쉽게 사용자 정의할 수 있습니다. _bookdown.yml그리고._output.yml

추가 읽기

이것은 저에게 효과가 있었습니다.

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 패키지에 이런 것이 있으면 좋을 것입니다.

언급URL : https://stackoverflow.com/questions/25824795/how-to-combine-two-rmarkdown-rmd-files-into-a-single-output