iBetter Books
수정

Quarto로 재현 가능한 문서 만들기

R Markdown이 R 전용 문서 도구였다면, Quarto는 R, Python, Julia, Observable JS를 모두 지원하는 차세대 통합 문서 시스템입니다. Posit(구 RStudio)이 개발했으며, R Markdown을 대체하는 방향으로 발전하고 있습니다.

Quarto vs R Markdown

# 주요 차이점
# ┌─────────────────┬─────────────────┬─────────────────┐
# │                 │  R Markdown      │  Quarto          │
# ├─────────────────┼─────────────────┼─────────────────┤
# │ 파일 확장자      │  .Rmd           │  .qmd            │
# │ 엔진             │  knitr 전용      │  knitr + Jupyter │
# │ 언어             │  R 중심          │  R, Python, Julia│
# │ 청크 옵션        │  ```{r echo=T}  │  #| echo: true   │
# │ 크로스레퍼런스   │  bookdown 필요   │  내장 지원        │
# │ 레이아웃         │  제한적          │  강력한 레이아웃  │
# │ 학술 논문 템플릿 │  제한적          │  다양한 저널 지원 │
# └─────────────────┴─────────────────┴─────────────────┘

# R Markdown으로 이미 작성한 문서는 거의 그대로 Quarto에서 동작합니다

Quarto 설치와 확인

# Quarto CLI 설치: https://quarto.org/docs/get-started/
# RStudio 2022.07 이상은 Quarto가 내장됨

# 설치 확인
system("quarto --version")

# R에서 quarto 패키지 설치
install.packages("quarto")
library(quarto)
quarto_version()

.qmd 파일 구조

Quarto 파일의 기본 구조는 R Markdown과 유사하지만, YAML 옵션과 청크 옵션 방식이 다릅니다.

---title: "자동차 연비 분석 보고서"author:  - name: 홍길동    affiliation: 한국대학교    email: [email protected]date: last-modifiedformat:  html:    toc: true    toc-depth: 3    number-sections: true    theme: cosmo    code-fold: true       # 코드 접기 기능    code-tools: true      # 코드 다운로드 버튼  pdf:    toc: true    number-sections: true    geometry: margin=2.5cmexecute:  echo: true  message: false  warning: falsebibliography: references.bib   # 참고문헌 파일csl: apa.csl                   # 인용 스타일---

청크 옵션: YAML 주석 방식

Quarto는 코드 청크 안에 #| 주석으로 옵션을 지정합니다.

```{r}
#| label: fig-scatter
#| fig-cap: "차체 무게와 연비의 관계"
#| fig-width: 7
#| fig-height: 5
#| echo: false

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "steelblue") +
  geom_smooth(method = "lm") +
  theme_classic()
```
```{r}
#| label: tbl-regression
#| tbl-cap: "회귀분석 결과"

library(broom)
library(gt)
model <- lm(mpg ~ wt + hp, data = mtcars)
tidy(model) |> gt()
```

크로스레퍼런스 (@fig-, @tbl-)

Quarto의 강력한 기능 중 하나입니다. 그림과 표에 레이블을 붙이면, 본문에서 자동 번호로 참조할 수 있습니다.

@fig-scatter에서 확인할 수 있듯이, 차체 무게와 연비 사이에는
강한 음의 선형 관계가 존재한다.

@tbl-regression에 제시된 바와 같이, 차체 무게(β = -3.88, p < .001)와
마력(β = -0.03, p < .01)이 연비에 유의한 영향을 미쳤다.

모형의 적합도는 R² = .83으로 양호하였다 (@tbl-regression 참조).
# 레이블 명명 규칙
# 그림 : fig-이름       (fig-scatter, fig-diagnostic)
# 표   : tbl-이름       (tbl-regression, tbl-descriptive)
# 수식 : eq-이름        (eq-regression)
# 섹션 : sec-이름       (sec-methods)

학술 논문 템플릿

Quarto는 Elsevier, JASA, PLOS, Springer 등 주요 저널의 논문 형식을 지원하는 확장(extension)을 제공합니다.

# 터미널에서 실행 (RStudio Terminal 탭)# Elsevier 저널 템플릿 설치quarto add quarto-journals/elsevier# 미국통계학회(JASA) 템플릿quarto add quarto-journals/jasa# 설치된 템플릿으로 파일 생성quarto use template quarto-journals/elsevier
# Elsevier 형식 YAML 예시---title: "무게와 마력이 연비에 미치는 영향"format:  elsevier-pdf:    keep-tex: true    journal:      name: "Journal of Statistical Analysis"      formatting: preprint      model: 3pabstract: |  본 연구는 차체 무게와 마력이 연비에 미치는 영향을   다중 회귀분석으로 분석하였다...keywords: [회귀분석, 연비, R]---

PDF 출력: tinytex

Quarto에서 PDF를 만들려면 LaTeX이 필요합니다. tinytex는 가볍고 설치가 쉬운 선택입니다.

# tinytex 설치 (한 번만 실행)
install.packages("tinytex")
tinytex::install_tinytex()

# 설치 확인
tinytex::is_tinytex()   # TRUE

# 한글 PDF를 위한 추가 패키지
tinytex::tlmgr_install(c("kotex", "xetex", "collection-langkorean"))
# 한글 PDF 출력 YAML---format:  pdf:    pdf-engine: xelatex    include-in-header:      text: |        \usepackage{kotex}        \setmainfont{Noto Serif KR}        \setsansfont{Noto Sans KR}---
# 터미널에서 Quarto 렌더링quarto render report.qmd                    # 기본 형식quarto render report.qmd --to pdf           # PDF로quarto render report.qmd --to html         # HTML로quarto render report.qmd --to docx         # Word로

재현 가능한 논문 예시 전체 구조

my_paper/
├── _quarto.yml           ← 프로젝트 공통 설정
├── paper.qmd             ← 논문 본문
├── references.bib        ← 참고문헌 데이터베이스
├── apa.csl               ← 인용 스타일
├── data/
│   └── mtcars.csv
└── R/
    └── analysis.R        ← 분석 스크립트
# _quarto.yml (프로젝트 설정)project:  type: defaultexecute:  freeze: auto    # 변경 없으면 캐시 사용bibliography: references.bibcsl: apa.csl

Quarto 웹사이트와 책 만들기

# 교재나 튜토리얼 사이트로 확장project:  type: bookbook:  title: "실전 R 통계 분석"  author: "홍길동"  chapters:    - index.qmd    - part1/chapter1.qmd    - part1/chapter2.qmd    - part2/chapter3.qmdformat:  html:    theme: cosmo  pdf:    pdf-engine: xelatex
# 책 빌드quarto render --to htmlquarto render --to pdfquarto publish gh-pages   # GitHub Pages에 배포

R Markdown에서 Quarto로의 전환은 자연스럽습니다. 지금 R Markdown을 사용하고 있다면 그대로 계속 써도 되지만, 새 프로젝트를 시작한다면 Quarto를 선택하는 것이 미래를 위한 현명한 결정입니다. 코드와 내용이 함께 살아 숨쉬는 문서, 그것이 재현 가능한 연구의 출발점입니다.