[1] "두 수의 합: 15"
Quarto로 스마트한 동적 보고서 만들기
오늘의 데이터 분석가의 과제
- 분석 코드, 결과, 시각화, 그리고 설명까지… 따로 관리하기 번거로우셨죠?
- 보고서 수정 시마다 반복되는 복사/붙여넣기 작업
- 결과 포맷(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 기초 연산 및 벡터
- 변수를 만들고 간단한 계산 결과를 출력합니다.
- 여러 데이터를 담는 벡터(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()