본문 바로가기
R

R - Rmarkdown 사용해서 문서 만들기 (1)

by Tiabet 2023. 5. 29.

오늘은 RStudio 를 이용해서 문서화 작업을 할 수 있는 방법인, Rmarkdown에 대해 알아보도록 하겠다.

 

Rmarkdown 이란?

우리가 보는 웹페이지는 기본적으로 모두 html 코드로 되어있다. 그래서 일반적으로 웹페이지를 만드려면 html 코드를 다룰 줄 알아야 한다. 하지만 markdown 을 사용하면, # 등의 기호들만 사용하여서도 html 코드를 작성하는 것과 같은 효과를 낼 수 있다. 하지만 이 markdown 이라는 것은 사용할 수 있는 특수한 환경이 필요한데, 그 환경 중 하나가 파로 Rmarkdown 이다. markdown으로 웹페이지를 작성하면 알아서 그에 맞는 html 코드로 변경해주는데, Rmarkdown도 마찬가지이다. 

 

RStudio 에서 Rmarkdown 만들기

위와 같이 [File -> New File -> R Markdown] 으로 이동하여 R Markdown 파일을 쉽게 생성할 수 있다.

이름과 저자를 적절하게 작성한 후, Output Format을 설정해준다. 참고로 PDF, Word 로 설정하면 Rmarkdown 에 한글을 사용할 때 깨지는 현상이 발생하기도 한다.

 

Knit 버튼으로 output 확인 가능!

이렇게 디폴트로 설정되어 있는 RMarkdown 파일 (줄여서 Rmd) 이 생성되는 것을 확인할 수 있다. 유심히 살펴보면, 

코딩할 때 #으로 주석을 달 듯 '--- ---', '``` ```' 으로 감싸져 있는 부분이 있는 것을 볼 수 있다. Knit을 해서 결과를 살펴보면, 아래와 같다.

문서에서 표현해야 하는 것들이 다양하니, 특수기호들로 이 다양성을 표현하는 것이 바로 markdown, 더 나아가 Rmarkdown 이라고 할 수 있겠다. 그러면 어떤 기호가 어떻게 표현되는지 하나하나 살펴보겠다.

 

 

YAML Header

YAML Header 는 문서 맨 위에서 작성하며, 문서의 제목과 저자, 날짜 등 문서의 정보를 나타낼 수 있으며, 문서의 전반적인 스타일을 정의할 수 있는 부분이다.

디폴트로는 title, author, date, output 이 정의되어 있다. 하지만 이 외에도 굉장히 많은 작업을 수행할 수 있는데, 일일이 다 정리하기는 양이 너무 많고 아래 깃헙을 참고하면 좋을 것 같다. 

 

https://zsmith27.github.io/rmarkdown_crash-course/lesson-4-yaml-headers.html

 

9 Lesson 4: YAML Headers | R Markdown Crash Course

 

zsmith27.github.io

간단하게 정리하자면, 목차, 테마, 코드를 숨길지 보여줄지 등을 설정할 수 있다.

---
title: "PostingFile"
author: "Tiabet"
date: "2023-05-28"
output:
 html_document:
    toc: true
    toc_depth: 2
    toc_float: true
---

 나는 toc, Table of Content 에 대해서 설정을 추가적으로 해주었다. 들여쓰기 등 양식에 주의하자.

옆에 목차를 설명해주는 칸이 하나 생겼음을 확인할 수 있다. toc_depth, toc_float은 각각 들여쓰기와 목차의 양식을 의미한다.

 

Chode Chunk

다른 markdown 환경들과 비교해서 Rmarkdown이 강력한 강점을 갖는 부분이 바로 코드를 자연스럽게 녹여낼 수 있다는 것이다. 코딩 관련 웹페이지를 만들 때 아주 유용하게 사용되는 기능이다.

 

숫자 1 옆의 ` 기호를 3번 쳐서 Code Chunk 부분을 열고 닫을 수 있다. 참고로 위 코드는 디폴트 값으로, 이 문서에서 echo 를 TRUE로 세팅한다는 의미이다. (knitr은 RMarkdown의 기초라고 해도 되는, 아주 유용하게 다루게 해주는 패키지이다.) echo를 TRUE로 세팅한다는 것은 문서에서 코드를 보여줄 것이라는 것을 의미한다.

 

```{r pressure, echo=FALSE}
plot(pressure)
```

 

밑으로 내려보면 위 코드를 확인할 수 있는데, 이는 문서에서 pressure를 plot한 것으로 나타난다.

어떤 R 코드건 간에, 이렇게 Chode Chunk를 사용해서 문서화할 수 있다. 코드를 실행하여 결과를 보여줄 뿐만 아니라, 코드 내용도 보여줄 수 있으니 강력한 기능이라고 할 수 있다. 참고로 코드 맨 윗 줄에 {r setup ...}, {r pressure ...} 에서 r 옆에 나오는 setup, pressure 같은 것들은 이 코드가 무엇을 하는 것인지 알아보기 쉽게 하는 라벨링이므로, 생략해도 아무 상관 없다.

 

이 외에도 warning, message, fig.width 처럼 R 코드와 관련해서 이런저런 것들을 세팅할 수 있는데, 역시 자세한 것은 필요할 때마다 찾아보면 될 것 같다. 아래는 knitr 패키지의 개발자가 직접 세팅할 수 있는 것들을 잘 정리해준 사이트이다.

https://yihui.org/knitr/options/

 

Options - Yihui Xie | 谢益辉

The knitr package provides a lot of chunk options for customizing nearly all components of code chunks, such as the source code, text output, plots, and the language of the chunk. It also offers some …

yihui.org

Markdown Text

이 외의 블록처리되지 않은 것들은 모두 Markdown 형식의 텍스트들이다. Markdown 문법은 공부하기엔 양도 엄청나게 많아서 같이 정리하기는 힘들 것 같다. 하지만 익히들 LaTex 등 자주 쓰는 Markdown 문법에 대해서는 알고 계실 것이라 생각하여 넘어가도록 하겠다.

 

다음 포스팅에선 html과 css 등을 Rmarkdown에서 사용해보도록 하겠다.