3.2 R 마크다운 문서 작성
R Markdown은 풍부하고 완벽하게 문서화되고 재현 가능한 분석을 생성하는 쉬운 방법을 제공합니다. 사용자는 분석을 처음부터 끝까지 재현하는 데 필요한 모든 주석, R 코드 및 메타 데이터가 포함 된 단일 파일을 공유 할 수 있습니다. R Markdown을 사용하면 HTML 또는 LaTeX 코드를 알지 못하거나 Microsoft Word DOCX 파일에서 바로 서식을 가져 오는 데 소란스럽지 않고도 R 코드 청크를 Markdown 텍스트와 결합하고 멋진 형식의 HTML, PDF 또는 Word 파일을 생성 할 수 있습니다.
하나의 R Markdown 파일은 다양한 형식을 생성 할 수 있으며이 모든 작업은 몇 비트 형식의 단일 텍스트 파일을 사용하여 수행됩니다. 일단 익숙해지면 R Markdown 문서를 작성하는 것이 얼마나 쉬운 지 유쾌하게 놀랄 것입니다.
3.2.1 R Markdown 파일의 오류 수정
3 장에서 만든 R Markdown 파일 ( first_rmarkdown.Rmd )을 기억하십시오 . 우리는 변수 생성에 약간의 오류를 남겼다는 것을 알고 있으며 오류를 표시하는 것이 이상하게 보일 수 있지만 R을 처음 접하는 사람이 처음에 볼 수있는 다양한 오류를 보는 것은 좋은 노출입니다. 이러한 오류가있는 HTML 니트 버튼을 클릭하면 어떤 일이 발생하는지 살펴 보겠습니다 . 그런 다음 코드를 정리하고 Knit 에서 결과 파일이 어떻게 보이는지 확인합니다 .
이 R Markdown 파일을 처음 만들었을 때 R Markdown 파일에 포함 할 수있는 항목의 종류를 알 수 있도록 기본 템플릿이 일부 코드와 텍스트로 미리 채워졌습니다. 여기에서 해당 코드 중 일부를 수정했습니다. 예를 들어, cars
이름이 저장된 객체 선언에서 오류가 발생하지 않았음에도 불구하고 명명 된 코드 청크의 모든 줄을 제거 했습니다. View in Pane 이 선택 되었기 때문에 뷰어 창 에 HTML 파일이 생성되는 것을 볼 수 있습니다 .
Including Plots 텍스트 를 살펴보면 R Markdown 파일에 제공된 플롯이 없지만 HTML 파일에 온도 및 압력의 산점도가 포함되어 있다는 사실에 놀랄 수 있습니다. 이는 R Markdown이 R 청크에 저장된 코드를 평가 한 다음 해당 결과를 HTML (또는 PDF 또는 DOCX 등) 출력에 포함하기 때문입니다.
R 코드 앞뒤에 텍스트가 주석으로 표시되는 것을 볼 수도 있습니다. “Including Plots”라는 텍스트가 다른 텍스트보다 훨씬 큰 이유를 조금 이해하게 될 것입니다.
중요 사항 : 실행하려는 모든 R 코드는 분석을 재현 할 수 있고 Knit를 사용할 때 오류가 발생하지 않도록 청크 (정확한 순서로)에 저장되어야합니다 . R 콘솔 에서 많은 작업을 수행 한 다음 해당 작업을 Rmd 파일 의 청크에 추가하는 것을 잊는 것은 쉽습니다 . 이것은 아마도 RStudio에서 처음 작업을 시작할 때 보게 될 가장 큰 오류 일 것입니다. 이 오류의 예는 다음과 같습니다.
object not found
오류가 가장 자주 발생하는 오류이며, R.이는 장에서 더 자세히 설명으로 잘못된 철자와 불완전 R 코드 세그먼트와 함께 문제의 대부분을 나타냅니다 (6) .
3.2.2 R Markdown 파일의 구성 요소
3.2.2.1 YAML
파일의 윗부분을 YAML 헤더라고합니다. YAML은 “YAML Ai n’t Markup Language”의 약자이며 공식 웹 사이트 http://yaml.org 에서 다음과 같이 정의 됩니다.
YAML은 모든 프로그래밍 언어에 대한 인간 친화적 인 데이터 직렬화 표준입니다.
기본적으로 YAML 헤더는 문서에 필요한 메타 데이터를 저장합니다. first_rmarkdown.Rmd 파일 에서 YAML 헤더의 예를 볼 수 있습니다 .
---
title: "First RMarkdown"
author: "Chester Ismay"
output: html_document
---
YAML 헤더에서 사용자 정의 할 수있는 다른 많은 필드가 있습니다. 여기서 주목해야 할 중요한 것은 YAML 헤더를 시작하고 끝나는 세 개의 하이픈입니다. 들여 쓰기는 YAML에서도 의미가 있으므로 텍스트를 정렬 할 때주의하십시오.
3.2.2.2 헤더
위에서 볼 수 있듯이 헤더 #
를 표시하려는 텍스트 앞에 하나 이상의 헤더를 추가하여 다양한 크기의 헤더를 만들 수 있습니다 .
3.2.2.3 강조
R Markdown 문서의 텍스트에 해시 태그가 표시 될 때마다 문서 섹션의 시작을 나타내는 굵게 표시된 더 큰 텍스트 2에 해당한다는 것을 알 수 있습니다.
이것은 R Markdown의 멋진 기능 중 하나입니다. 일반 텍스트를보고 니트 문서에서 생성되는 내용을 알 수 있습니다. 또한 단어, 구 또는 문장을 일치하는 기호로 둘러 싸서 다양한 스타일의 강조를 추가 할 수 있습니다. 다음은 몇 가지 예입니다.
출력을 사용자 정의하는 것이 얼마나 쉬운 지 알기 시작했습니다. 다음으로 URL에 링크를 추가하고, 정렬 된 목록과 정렬되지 않은 목록을 만들고, 자주 사용되는 다른 마크 다운 기능을 사용하는 방법에 대해 설명합니다.
3.2.2.4 링크
URL에 대한 링크를 추가하려면 결과 HTML 파일에 표시 할 텍스트를 내부 [ ]
에 넣은 다음 그 ( )
사이에 공백없이 바로 옆에 있는 링크 자체 를 묶으면됩니다 .
3.2.2.5 목록
아래 스크린 캐스트는 정렬 된 목록과 정렬되지 않은 목록을 모두 만드는 과정을 보여줍니다.
“Warm up food”에 “1”로 번호를 매기면서 본 것처럼 숫자 만 필요합니다. 텍스트를 두 개의 공백으로 들여 쓰기하여 정렬되지 않은 목록과 정렬 된 목록을 결합 할 수도 있습니다.
다음의 많은 예에서 R Markdown 문서에 입력 한 실제 텍스트가 회색 배경으로 강조 표시되고 바로 아래에 해당 텍스트의 결과가 표시됩니다.
1. Wake up
- Get out of bed
1. Warm up food
- Open kitchen door
- Get plate out of cupboard
2. Make coffee
i. Warm up water
ii. Grind beans
3. Make breakfast
We can have a paragraph (or two) here describing how we could go about making
breakfast. If we indent the paragraph a few spaces and create a newline, it
will indent below the item.
일어나
- 침대에서 일어나
음식 예열
- 오픈 키친 도어
- 찬장에서 접시 꺼내기
커피를 만들다
- 물 데우기
- 콩 갈기
아침을 만들다
여기에 우리가 아침 식사를 만드는 방법을 설명하는 단락 (또는 두 개)이있을 수 있습니다. 단락을 몇 개의 공백으로 들여 쓰면 항목 아래에 들여 쓰기됩니다.
3.2.2.6 기타 마크 다운
줄 바꿈 / 흰색 간격
공백과 결합 된 줄 바꿈은 종종 새 단락의 시작을 나타 내기 때문에 Markdown에서 매우 중요합니다.
Here is an example of text with only a line break.
You may expect this line to appear in a new paragraph but it doesn't.
다음은 줄 바꿈 만있는 텍스트의 예입니다. 이 줄이 새 단락에 나타날 것으로 예상 할 수 있지만 그렇지 않습니다.
새 단락을 시작하려면 두 단락 사이에 공백을 추가해야합니다.
Here is an example of text with a line break and white space.
You may expect this line to appear in a new paragraph and it does.
다음은 줄 바꿈과 공백이있는 텍스트의 예입니다.
이 줄이 새 단락에 나타날 것으로 예상 할 수 있습니다.
수평 규칙
문서의 다른 부분을 나누는 또 다른 유용한 방법은 가로줄을 포함하는 것입니다. 가로줄은 세 개의 별표 (또는 세 개의 하이픈)를 나란히 배치하여 추가 할 수 있습니다.
***
---
인용구
누군가를 인용하거나 들여 쓰기 된 텍스트 블록을 생성 >
하려면 구절 앞에 를 추가하면됩니다 .
> Reproducible research is the idea that data analyses, and more generally,
scientific claims, are published with their data and software code so that
others may verify the findings and build upon them. - Roger Peng
재현 가능한 연구는 데이터 분석,보다 일반적으로 과학적 주장이 데이터 및 소프트웨어 코드와 함께 게시되어 다른 사람들이 결과를 확인하고이를 기반으로 구축 할 수 있다는 아이디어입니다. -로저 펭
주석 텍스트
R Markdown 문서 내에서 텍스트를 주석 처리하고 싶을 때가 있습니다. 결과 니트 문서에서 원하지 않는 내용을 작성했지만 완전히 삭제해야하는지 확실하지 않다고 가정 해 보겠습니다. 주석을 작성하려면 <!-- -->
아래와 같이 텍스트 블록을 묶으십시오 .
<!--
I'd like to save this text for later and don't want to delete it yet.
-->
이 책에서 주석 처리 된 결과를 볼 수 없습니다.
방정식
문서에 멋진 수학 공식이 필요한 경우 두 달러 기호 사이에 추가 할 수 있습니다.
$y = mx + b$
와이=미디엄엑스+비y=mx+b
3.2.2.7 R 청크
이제 기본 사항을 숙지 했으므로 R Markdown의 가장 좋은 부분 인 결과 출력에 컴파일 된 문서에 R 코드를 직접 포함 할 수있는 기능을 얻을 수 있습니다. 이미 R Markdown 파일에서 R 청크의 몇 가지 예를 보았습니다. 이러한 코드 블록은 모두 사용자가 알아야하는 몇 가지 공통 속성을 공유합니다.
- 코드 블록은 항상 세 개의 백틱으로 시작하고 끝납니다 `````.
- 처음 세 개의 백틱 후에 R 청크의 첫 번째 줄은로 시작하고
{r
선택적으로 이름 및 / 또는 기타 청크 옵션을 포함하고}
. - 시작과 닫는 세 개의 백틱 사이에있는 줄은 콘솔에서 실행할 수있는 유효한 R 코드입니다.
이러한 백틱 앞에 공백을 포함하면 오류가 발생합니다.
우리에 first_rmarkdown.Rmd 파일의이 인식하고 우리 자신의 R 덩어리를 만드는 예를 살펴 보자 :
이 예제에서는 값 벡터를 만드는 두 가지 방법을 소개합니다. 이에 대한 자세한 내용은 5 장에서 볼 수 있습니다. Knit HTML 버튼을 눌렀을 때 코드가 자동으로 실행 되고 그 출력이 니트 파일에 포함 된 것을 볼 수 있습니다.
중요 참고 사항 :이 이후의 다른 R 청크는 여기에서 생성 된 세 가지 변수 count20
인 count100_by_5
,, prod
. mult_vectors
명명 된 청크 이전의 청크 는 이러한 변수에 액세스 할 수 *없습니다* . 책처럼 문서를 읽을 수 있으므로 개체를 추가하고 적절한 순서로 작업하는 것이 중요합니다. 그렇지 않으면 R에서 오류를 받게됩니다.
3.2.2.8 인라인 R 코드
우리는 R 코드를 추가 할 수 있고 세 개의 백틱으로 묶인 R 코드 청크에서 실행할 수 있음을 확인했습니다. 그러나 간단한 계산 결과를 문서 텍스트에 직접 포함하려면 어떻게해야합니까? R Markdown도 그렇게 할 수 있습니다.
또 다른 교묘 한 접근 방식은 문서에서 생성 된 텍스트가 R 코드의 결과에 따라 자동으로 업데이트되도록하는 것입니다. 이에 대한 예를보기 위해 count20
벡터 에서 무작위로 숫자를 선택합니다 . 숫자가 10보다 크거나 같으면 그렇게 말할 것입니다. 그렇지 않은 경우보고합니다.
세 번째 인수를 ifelse
인용 부호에 포함하지 않았을 때 R에서 오류가 발생했음을 알 수 있습니다 . 그러나 코드를 수정하고 Knit HTML을 다시 누르면 오류가 사라졌습니다.
3.2.2.9 코드 강조
이전 예에서 보았 듯이 R 개체의 이름을 강조 표시하여 일반 텍스트와 구별하는 것이 좋습니다. 이것은 우리가했던 것과 같은 단일 백틱으로 단어를 묶어 수행 할 수 있습니다 one_value
.
3.2.3 R 마크 다운 청크 옵션
청크 단위로 청크에 여러 옵션을 설정할 수 있습니다. 가장 일반적인 R 청크 옵션은 echo
, eval
하고 include
. 기본적으로 이러한 세 가지 옵션은 모두로 설정됩니다 TRUE
.
echo
결과를 생성하는 코드가 해당 R 출력 전에 인쇄되어야하는지 여부를 나타냅니다.eval
코드를 평가할지 아니면 출력없이 표시할지 여부를 지정합니다.include
코드와 그 출력이 결과 편직 문서에 포함되어야하는지 여부를 지정합니다.FALSE
코드 로 설정되어 있으면 실행되지만 코드 또는 출력이 결과 문서에 포함되지 않습니다.
우리가 그것을 지정 eval=FALSE
했고 그 청크가 one_value
변수를 선언 한 곳 이었기 때문에 이제 오류가 발생합니다. 각 옵션을 쉼표로 구분하여 여러 청크 옵션을 포함 할 수 있습니다.
3.2.4 R Markdown 파일 작성을위한 일반 지침
공백은 당신의 친구입니다. R 청크와 Markdown 텍스트 사이에는 항상 빈 공백을 포함해야합니다. 문서를 훨씬 더 읽기 쉽게 만들고 잠재적 인 오류를 줄일 수 있습니다. 또한 헤더 텍스트와 단락 사이에 공백을 남겨 두십시오.
해설은 항상 좋습니다. 가능할 때마다 자신과 아이디어를 설명하십시오. 가장 빈번한 공동 작업자는 몇 달 후에는 본인 일 가능성이 높습니다. 미래에 친절하게 대하고 무엇을하고 있는지 설명하여 기억할 수 있도록하십시오!
콘솔 및 R 마크 다운 환경 (편직시)은 서로 상호 작용하지 않습니다. 이렇게하면 다른 사람과 공유하려는 결과를 정확히 생성하는 코드 만 R 청크에 포함해야합니다. 추가 출력으로 문서를 부 풀리지 마십시오. 무엇을하고 있는지 간결하고 명확하게 설명하십시오.
청크 옵션은 문서를 실제로 아름답게 꾸미고 문서 독자가보기를 원하는대로 정확하게 사용자 지정할 수 있습니다. 여기 에서 사용 가능한 모든 R 청크 옵션에 대한 자세한 정보를 찾을 수 있습니다 .
3.2.5 도움말-> 치트 시트
RStudio는 RStudio 내에서 수행 할 많은 일반적인 작업에 대한 훌륭한 참조 역할을 할 수있는 정말 멋진 치트 시트를 제공합니다. 도움말-> RStudio 내의 치트 시트 로 이동하여 파일의 멋진 PDF 버전을 얻을 수 있습니다 .
그림 4.1 : RStudio Cheatsheets 스크린 샷
3.2.6 맞춤법 검사
R Markdown 편집기 창 상단에는 문서 작성에 유용한 도구 중 하나 인 맞춤법 검사 버튼이 있습니다. 위에 “ABC”가있는 녹색 확인 표시입니다.
문서를 제출하거나 다른 사람과 공유하기 전에 문서의 맞춤법을 검사해야합니다. 단어로 인식되지 않을 수 있기 때문에 사전에 R 명령을 추가하거나 무시해야 할 수도 있지만, 입력 할 때 단어의 철자를 틀리기 쉽고이 기능이 정말 도움이 될 수 있습니다.
- 네 번째, 다섯 번째 또는 여섯 번째 수준의 헤더를 원하지 않는 한 일반적이지 않습니다. ↩︎
3.2.6.1 출력 형식
의 output_format
인수를 설정하여 .Rmd 파일을 render
하여 R Markdown의 지원되는 형식으로 렌더링합니다. 예를 들어 아래 코드는 1-example.Rmd
를 Microsoft Word 문서로 렌더링합니다.
library(rmarkdown)
render("1-example.Rmd", output_format = "word_document")
형식을 선택하지 않으면 R Markdown은 파일을 output
.Rmd 파일 헤더의 필드 에서 설정할 수있는 기본 형식으로 렌더링합니다 . 1-example.Rmd
의 헤더는 기본적으로 HTML
파일로 렌더링됨을 보여줍니다.
RStudio IDE Knit
버튼은 파일을 해당 output
필드에 나열된 첫 번째 형식으로 렌더링합니다. 니트 버튼 옆에있는 드롭 다운 메뉴를 클릭하여 추가 형식으로 렌더링할 수 있습니다.
R Markdown과 함께 사용할 수있는 출력 형식은 다음과 같습니다.
문서
- html_notebook- 대화 형 R 노트북
- html_document- 부트 스트랩 CSS가있는 HTML 문서
- pdf_document -PDF 문서 (LaTeX 템플릿 사용)
- word_document -Microsoft Word 문서 (docx)
- odt_document -OpenDocument 텍스트 문서
- rtf_document- 서식있는 텍스트 문서
- md_document- 마크 다운 문서 (다양한 특징)
프레젠테이션 (슬라이드)
- ioslides_presentation - ioslides가있는 HTML 프레젠테이션
- revealjs :: revealjs_presentation - reveal.js를 사용한 HTML 프리젠 테이션
- slidy_presentation -W3C Slidy를 사용한 HTML 프리젠 테이션
- beamer_presentation -LaTeX Beamer를 사용한 PDF 프레젠테이션
- powerpoint_presentation : PowerPoint 프레젠테이션
기타
- flexdashboard :: flex_dashboard- 대화형 대시 보드
- tufte :: tufte_handout -Edward Tufte 스타일의 PDF 유인물
- tufte :: tufte_html -Edward Tufte 스타일의 HTML 유인물
- tufte :: tufte_book -Edward Tufte 스타일의 PDF 책
- html_vignette -R 패키지 비 네트 (HTML)
- github_document -GitHub Flavored Markdown 문서
3.2.6.2 출력 옵션
각 출력 형식은 R의 함수로 구현됩니다. YAML 메타 데이터의 output
. 필드 의 하위 값으로 함수에 인수를 전달하여 출력을 사용자 정의할 수 있습니다 . 예를 들어, 8-outputs.Rmd 는 부동 목차로 렌더링됩니다.
형식이 어떤 인수를 사용하는지 알아 보려면 R 형식의 도움말 페이지 (예 : ?html_document
.
참고 문헌
Grolemund, Garrett. 2014. R을 사용한 실습 프로그래밍 . 오라일리.