Quarto로 스마트한 동적 보고서 만들기

Author

hjlim

Published

March 10, 2026

오늘의 데이터 분석가의 과제

  • 분석 코드, 결과, 시각화, 그리고 설명까지… 따로 관리하기 번거로우셨죠?
  • 보고서 수정 시마다 반복되는 복사/붙여넣기 작업
  • 결과 포맷(HTML, PDF, Word)을 변경할 때마다 드는 시간

Quarto는 이 모든 과정을 하나로 통합하여 해결합니다!


Quarto란 무엇인가?

코드, 실행 결과, 시각화, 텍스트를 하나의 문서로 통합하는 차세대 오픈소스 과학/기술 퍼블리싱 시스템

  • 재현 가능성: 코드와 결과가 함께 있어 분석 과정을 투명하게 공유
  • 다중 포맷 지원: 하나의 파일로 HTML, PDF, MS Word, 프레젠테이션 등 제작
  • 다중 언어 지원: R 뿐만 아니라 Python, Julia, Observable JS와 함께 사용 가능
  • R Markdown의 모든 장점을 계승 및 발전

시작하기: 준비물 및 설정

1. 필수 프로그램 설치

  • 최신 버전의 R
  • 최신 버전의 RStudio (Quarto 내장)

2. 새 Quarto 문서 만들기

  • RStudio 메뉴에서 File > New File > Quarto Document... 선택
  • 문서 제목(Title), 작성자(Author) 입력
  • 기본 출력 형식(Output Format)으로 HTML 선택 후 생성

핵심! 코드 청크 옵션 다루기

코드 청크의 동작을 제어하는 #| 옵션들입니다.

  • #| echo: true: 코드와 결과를 모두 보여줍니다. (기본값)
  • #| echo: false: 코드는 숨기고 결과만 보여줍니다.
  • #| eval: false: 코드는 보여주지만 실행하지는 않습니다.
  • #| include: false: 코드와 결과 모두 숨깁니다. (e.g. library() 호출)
  • #| warning: false: 코드 실행 시 발생하는 경고 메시지를 숨깁니다.
  • #| fig-cap: "그림 설명": 생성된 플롯(그림)에 캡션을 추가합니다.

예제 1: R 기초 연산 및 벡터

  • 변수를 만들고 간단한 계산 결과를 출력합니다.
[1] "두 수의 합: 15"
  • 여러 데이터를 담는 벡터(Vector)를 만들고 통계량을 요약할 수 있습니다.
# 벡터 생성 및 요약
my_vector <- c(15, 23, 8, 42, 16)
summary(my_vector)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    8.0    15.0    16.0    20.8    23.0    42.0 

예제 2: 데이터프레임과 시각화

# 데이터 구조 확인
str(iris)
'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
# 상위 6개 데이터 확인
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

예제 3: 데이터 시각화(ggplot2)

# ggplot2 패키지 로드
library(ggplot2)

# 산점도 그리기
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
  geom_point() +
  labs(
    title = "Iris 데이터의 산점도",
    x = "꽃받침 길이 (Sepal Length)",
    y = "꽃잎 길이 (Petal Length)"
  ) +
  theme_minimal()
Figure 1: 붓꽃(iris) 데이터의 종별 꽃받침과 꽃잎 길이 관계