R 통합개발환경(IDE)인 RStudio 를 사용해서 R code와 함께 텍스트를 혼합해서 HTML, PDF, MS Word 등의 다양한 형태의 문서를 문들 수 있습니다.
데이터, 통계분석 코드와 텍스트가 수미일관되게 하나의 문서 안에서 관리될 수 있다면 버전 관리의 어려움을 덜 수 있어서 재현가능한 연구(Reproducible Research) 관점에서 매우 유용합니다.
기존의 사용 방법과 비교를 해보겠습니다. 기존 대로라면 R로 코드를 짜고 (혹은 엑셀을 사용해서), 요약통계량도 뽑고, 추정, 검정도 하고, 그래프도 그린 다음에 이걸 HTML, 워드나 파워포인트복사 & 붙여넣기(copy & paste), 혹은 화면 캡쳐를 해서 붙여넣기를 했을 겁니다. 그런데 만약 raw data에 변경 사항이 발생하면 이후의 작업에 모두 영향을 미치게 되며, 일일이 찾아가서 수정을 해줘야 합니다.(업계 전문용어로 시간 잡아먹는 쌩노가다...-_-;) 시간도 아까울뿐더러, 행여 실수로 최신 데이터 결과로 업데이트 하는 것을 빼먹기라도 하면 의사결정을 하는데 있어 심각한 오류를 범하게 할 수도 있습니다.
이번 포스팅에서 다룰 내용은 바로 이런 난맥을 해결할 수 있는 방법입니다. 그리고 HTML 로 만들어서 웹상에서 공유하면 여러사람이 공유, 협업하는데도 유용할 것입니다.
[ R Markdown : Analyze. Share. Reproduce. ]
* source : http://rmarkdown.rstudio.com/
다음의 순서대로 소개를 하겠습니다.
=========================================
1. knitr, rmarkdown package 설치하기
2. RStudio Project 만들기
3. R Markdown 문서 만들기 (HTML)
=========================================
1. knitr, rmarkdown package 설치하기 |
knitr ('니터'라고 발음), rmarkdown, pandoc package가 필요한데요, 이중에서 pandoc은 RStudio를 설치할 때 알아서 같이 설치가 되므로 신경 안쓰셔도 됩니다.
# installing knitr, rmarkdown packages install.packages("knitr") install.packages("rmarkdown") library(knitr) library(rmarkdown)
|
2. RStudio Project 만들기 |
Project는 동일 목적의 단위 작업에 사용된 파일들을 하나의 단일 폴더에 관리할 수 있도록 해주므로 파일 관리, 버전 관리 등에 유용합니다.
새로운 Project 를 만들려면 RStudio 의 왼쪽 상단 메뉴에서 File > New Project... 를 선택하면 아래와 같은 팝업 화면이 나타납니다.
이번 포스팅에서는 새로 디렉토리를 만들어서 예를 들 것이므로 'New Directory' 메뉴를 선택해보겠습니다.
[ File > New Project... > Create Project : New Directory ]
'New Directory' 메뉴를 선택하며 아래처럼 Project Type을 선택하는 화면이 뜹니다. 'Empty Project'를 선택해보겠습니다. (R Package 나 Shiny Web Application 은 나중에 별도 포스팅하겠습니다)
[ Project Type : Empty Project ]
그 다음으로는 아래처럼 디렉토리 이름(directory name:)과 새로 만들 디렉토리가 위치할 경로(subdirectory of ~)를 지정해주는 화면이 뜹니다. 다 입력하고 나면 하단의 'Create Project' 단추를 눌러주세요.
[ Directory name : 00000, Create project as subdirectory of : ~/00000 ]
여기까지 실행을 해주면 RStudio 의 우측 하단에 'Files' 메뉴에 방금 전에 지정해주었던 'RMarkDownDir' 이라는 이름의 새로운 디렉토리가 생성되었음을 알 수 있습니다. 그리고 그 폴더 안에 'RMarkDownDir.Rproj' 라는 파일도 새로 만들어졌습니다.
작업 디렉토리(working directory)를 확인해보니 방금 전에 만든 Project 폴더로 세팅이 되어 있음을 확인할 수 있습니다. 나중에 'RMarkDownDir Project'를 선택해서 실행을 시키면 작업 디렉토리를 알아서 아래처럼 자동 세팅해주므로 편리합니다.
> # chceking working directory > getwd() [1] "C:/Users/Administrator/Documents/R_DynamicDoc/RMarkDownDir"
|
나중에 여러개의 Project를 만들어서 사용하게 되는 경우라면 RStudio 의 우측 상단에 Project list 를 확인하고 선택해서 넘나들 수 있는 아이콘과 메뉴가 있습니다. 아래 화면캡쳐에서는 'RMarkDownDir' 라는 방금 전에 만든 Project만 보이지만요, 다른 프로젝트도 만들면 여러개가 동시에 보일거예요. (참고로, 우측 상단 아이콘 클릭했을 때 첫 줄에 나오는 'New Project' 를 선택하면 역시 새로운 프로젝트를 만들 수 있습니다)
3. R Markdown 문서 만들기 |
3-1) 왼쪽 상단의 메뉴에서 File > New File > R Markdown... 메뉴를 선택
3-2) Document 선택 > Title, Author 입력 > Default Output Format에서 HTML 선택 > OK 클릭
(Presentation, Shiny 등은 나중에 별도 포스팅하겠습니다)
3-3) 아래처럼 예제 R Markdown 이 새로 만들어지는데요, title, author는 방금전 팝업 화면에서 입력한 내용이 들어가 있습니다. (간단한 샘플 코드가 들어가 있으니 참고하시면 됩니다)
R Markdown 문서를 rendering 하는 절차는 크게 2단계로 나뉘는데요, 먼저 knitr 패키지로 source code에서 R code 를 실행을 하면 .Rmd 파일이 생성됩니다. 그 다음에 pandoc 패키지를 사용해서 Markdown 을 HTML, PDF, Word 등으로 변환하는 작업을 하면 '.md' 파일이 생성됩니다.
3-4) Knit > Knit to HTML 선택하면 R code를 knitr 가 실행하고 pandoc 이 HTML로 변환해줌
(단축키 : Ctrl + Shift + K)
3-5) '.Rmd' 파일, 'HTML' 파일이 생성
우측 하단의 'File' 메뉴란을 확인해보시면 아와 같이 '.Rmd' 파일, 'HTML' 파일이 새로 만들어졌습니다.
3-6) Preview in Viewer Pane 세팅
'Preview in Viewer Pane' 에 체크를 해놓으면 RStudio 우측 하단에 있는 Viewer 에서 HTML 을 미리보기 할 수 있어서 편리합니다.
3-9) 'Viewer' 확인해보기
우측 하단의 'Viewer' 메뉴에 가서 보면 HTML 형태의 문서를 미리 볼 수가 있습니다.
(샘플로 예제 하나가 미리 들어가 있으며, 필요한 부분은 샘플 참고해서 수정해가면서 본문 내용 채우면 됨)
3-10) 문서의 전체 목차 한꺼번에 보기(show document outline)
아래 화면 캡쳐해놓은 것처럼 우측 상단의 아이콘('show document outline')을 클릭하면 문서 전체의 목차(outline)을 한눈에 일목요연하게 볼 수 있습니다. 그리고 목차 중의 하나를 선택하면 해당 문서의 단락으로 바로 이동한답니다. 코드가 긴 경우에 '##==== ~~~' 으로 코드 단락을 구분해주면 나중에 전체 조망하기에도 좋고, 바로 원하는 단락으로 직행할 수도 있으므로 매우 편리한 기능이라고 하겠습니다. 단축키는 'Ctrl + Shift + O' 입니다.
3-11) 문서 단락별로 접었다 펴기(fold, unfold)
아래 화면캡쳐한 부분의 왼쪽 검정색 상자로 표시해 놓은 것처럼 삼각형 뒤집어 놓은 부분을 클릭하면 해당 단락이 접혀(fold)집니다. 토글 기능으로 되어 있어서 한번 더 누르면 다시 펴집니다(unfold).
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되셨다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^
'R 분석과 프로그래밍 > R 동적 문서(Dynamic Document)' 카테고리의 다른 글
[R] R Shiny 로 두 집단 간 평균 차이 t-검정(t-Test) 신뢰수준별 신뢰구간 구하는 웹 애플리케이션 만들기 (5) | 2019.06.30 |
---|---|
[R] R Shiny로 두 연속형 변수 간 상관계수, 산점도와 회귀선 그리는 앱 애플리케이션 만들기 (2) | 2019.06.30 |
[R] R Shiny로 연속형 변수 별 요약 통계량 조회하는 Interactive App 만들기 (0) | 2019.06.29 |
[R] rmarkdown HTML 문서의 포맷 정하기 (7) | 2017.05.02 |
[R] servr 패키지를 사용해서 .Rmd 파일들을 자동 rendering 하고 로컬 웹 서버로 올리기 (0) | 2017.05.01 |