R Markdown, Knitr, Pandoc 및 Bookdown의 관계


90

R Markdown, Knitr, Pandoc 및 Bookdown의 기능 간의 관계는 무엇입니까?

구체적 R 임베디드 코드 (예를 들어, 마크 업 문서로 변환 이러한 패키지의 '분업'무엇 .Rnw이나 .Rmd최종 출력으로)은 (예 .pdf또는 .html)? 그리고 Knitr을 사용하여 RMarkdown을 처리하는 경우 rmarkdown패키지는 무엇 을하며 markdown package?

답변:


135

Pandoc

Pandoc은 문서 변환기입니다. 그것은 다음과 같은 많은 다른 형식으로 다른 마크 업 형식의 숫자로 변환 할 수 있습니다 .doc, .pdf

Pandoc은 GUI가없는 명령 줄 도구입니다. R과는 별개의 독립적 인 소프트웨어입니다. 그러나 rmarkdown문서 변환에 의존 하기 때문에 R Studio와 함께 번들로 제공됩니다 .

Pandoc은 문서를 변환 할뿐만 아니라 기본 마크 다운 언어 위에 기능을 추가하여 더 복잡한 출력을 지원할 수 있도록합니다.

R 마크 다운

R Markdown은 markdown을 기반으로합니다.

마크 다운 (마크 업 언어)

Markdown은 HTML 및 기타 여러 형식으로 변환 할 수 있도록 설계된 일반 텍스트 형식 지정 구문을 사용하는 경량 마크 업 언어입니다. 마크 다운 파일은 일반적으로 확장자가 부여 된 일반 텍스트 파일입니다 .md.

HTML 및 Latex와 같은 다른 마크 업 언어와 마찬가지로 R과 완전히 독립적입니다.

명확하게 정의 된 Markdown 표준이 없습니다. 이로 인해 여러 공급 업체가 자체 언어 변형을 작성하여 결함을 수정하거나 누락 된 기능을 추가함에 따라 단편화가 발생했습니다.

Markdown (R 패키지)

markdown.Rmd파일을 HTML 로 변환하는 R 패키지입니다 . rmarkdown훨씬 더 많은 기능을 제공하는 의 이전 버전입니다 . 더 이상 사용하지 않는 것이 좋습니다.

R Markdown (마크 업 언어)

R Markdown은 markdown 구문의 확장입니다. R Markdown 파일은 일반적으로 파일 확장자가 .Rmd. 그것들은 나중에 실행될 수있는 방식으로 R 코드를 삽입 할 수있는 마크 다운 구문의 확장을 사용하여 작성됩니다.

rmarkdown패키지에서 처리 될 것으로 예상되기 때문에 Pandoc 마크 다운 구문 을 R 마크 다운 파일의 일부로 사용할 수 있습니다. 이것은 원시 HTML / Latex 및 테이블과 같은 추가 기능을 제공하는 원래 마크 다운 구문의 확장입니다.

R Markdown (패키지)

R 패키지 rmarkdown.Rmd파일을 다양한 형식으로 처리하고 변환하는 라이브러리입니다 .

핵심 기능은 rmarkdown::render어떤 pandoc의 어깨에 서있다 . 이 함수 는 pandoc을 사용하여 입력 파일을 지정된 출력 형식으로 '렌더링합니다. 입력에 뜨개질 knitr::knit이 필요한 경우 pandoc 전에 호출됩니다.

RMarkdown 패키지의 목표는 Pandoc 옵션을 사용자 정의하기 위해 합리적으로 좋은 기본값과 R 친화적 인 인터페이스를 제공하는 것입니다. .

RMarkdown 파일 상단에 표시되는 YAML 메타 데이터는 특히 rmarkdown::render빌드 프로세스를 안내하기 위해 옵션을에 전달 하는 것입니다.

RMarkdown은 마크 다운 구문 만 다룹니다. .Rhtml또는 .Rnw파일 을 변환 하려면에 내장 된 편의 기능 ( Knitr예 : knitr::knit2html및)을 사용해야합니다.knitr:knit2pdf

Knitr

Knitr는 코드가 포함 된 일반 텍스트 문서를 가져 와서 코드를 실행하고 결과를 문서로 다시 'knits'합니다.

예를 들어,

핵심 기능은 knitr::knit기본적으로 입력 문서를보고 Rnw, Rmd 등 어떤 유형인지 추측합니다.

이 핵심 기능은 다음 세 가지 역할을 수행합니다.-입력 문서를보고 사용자가 평가하려는 코드 부분을 감지하는 소스 파서. -이 코드를 평가하는 코드 평가 기-원시 출력 유형에서 해석 할 수있는 형식으로 평가 결과를 문서에 다시 쓰는 출력 렌더러. 예를 들어 입력 파일이 .Rmd이면 출력 렌더는 코드 평가의 출력을 .md형식으로 표시합니다.

문서 형식 간 변환

Knitr는 문서 형식간에 변환 하지 않습니다 ( 예 : a .md.html. 그러나 다른 라이브러리를 사용하여이를 수행하는 데 도움이되는 몇 가지 편리한 기능을 제공합니다. 패키지를 사용하는 rmarkdown경우이 기능이로 대체되었으므로 무시해야합니다 rmarkdown::render.

예를 들면 knitr:knit2pdf다음과 같습니다. '입력 Rnw 또는 Rrst 문서를 편직하고 texi2pdf 또는 rst2pdf를 사용하여 PDF로 컴파일'합니다.

혼란의 잠재적 원천이다 knitr::knit2html, 이는 "니트 입력 인하 소스와 호출하는 편리한 기능입니다 markdown::markdownToHTMLHTML로 결과를 변환 할 수는." markdown패키지가 패키지로 대체되었으므로 이제 레거시 기능 rmarkdown입니다. 이 참고 사항을 참조 하십시오 .

북 다운

bookdown 패키지는 R Markdown 위에 구축되었으며 Markdown 구문의 단순성과 여러 유형의 출력 형식 (PDF / HTML / Word /…) 가능성을 상속합니다.

다중 페이지 HTML 출력, 번호 매기기 및 그림 / 표 / 섹션 / 방정식 상호 참조, 부품 / 부록 삽입, GitBook 스타일 ( https://www.gitbook.com )을 가져 와서 우아하고 매력적인 HTML을 만드는 기능을 제공합니다. 책 페이지.


2
나는 이것이 매우 혼란스러워서 여기서 최선을 다했습니다. 내가 뭔가 잘못을 가지고 있다면 ... 편집을하거나 다른 대답을 추가하세요
RobinL

6
내가 헷갈리는 한 가지 측면은 도구 체인의 각 단계에 전달되는 매개 변수에 대한 문서입니다. 대화식 도움말 (예 : 자동 완성)이 거의 없으며 yaml 헤더에서 호출해야하는 매개 변수를 추측해야합니다. 또는 호출해야하는 매개 변수를 추측해야합니다 knitr_opts(항상 호출되는 것을 잊어 버립니다), 사용자 지정 pandoc 인수, 추가 yam 파일 또는 사용자 지정 pandoc 템플릿 ... 가끔은 정글 같은 느낌이 듭니다. 특히 LaTeX를 체인에 추가하면 더욱 그렇습니다.
baptiste

3
@baptiste 나는 완전히 동의합니다. 이것이 바로 제가 LaTeX가없는 RNW 문서를 선호하는 이유입니다. 중간 pandoc단계도없고 마법도 적고 혼란도 적습니다. 가파른 LaTeX 학습 곡선입니다. 제 생각에는 Rmarkdown은 간단한 기본 항목에 만족할 때 좋습니다. 그러나 조정해야하는 즉시 복잡성이 빠르게 증가합니다.
CL.

3
이것이 내가 찾은 가장 좋은 설명입니다. 초보자 또는 나처럼 R과 라텍스에 대한 수년간의 경험을 가진 사람들에게도 매우 혼란 스럽습니다. 훌륭한 게시물입니다.
StatsStudent 2019

2
@StatsStudent rstudio rmarkdown 치트 시트의 이전 버전에는 rmarkdown에서 출력을 생성하는 여러 단계를 이해하는 데 매우 도움이되는 다이어그램이 있다고 생각합니다. 아마도 여기에 대한 대답은 다이어그램으로 할 수 있습니까?
Mark Neal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.