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를 선택하는 것이 미래를 위한 현명한 결정입니다. 코드와 내용이 함께 살아 숨쉬는 문서, 그것이 재현 가능한 연구의 출발점입니다.