R Markdownとは、RとMarkdownが結合されたもので、文章の表示とRの実行が同時にできる事が魅力の1つ。
R Markdownでは文章の中にコマンドを同梱できるため、ファイルが複数に散逸せず、整理しやすいという利点がある。
また、rmdファイルを送った相手に、解析内容を詳細に伝えられ、また相手側で簡単に再現できるという、
共同研究を行う上で最重要項目の1つ、「データを正しく共有」という面で大いに力を発揮する。
- 研究ノートが散逸しにくい
- 結果をレポートに貼り付ける際のコピペミスを防げる
- コマンドも一緒にかかれているので、どのように分析したかが相手にもわかる
- 分析の再実行・部分変更が容易
- データファイルとR Markdownを同じフォルダに入れられる
- Markdownで書いたテキストは、HTML,Word, Tex, , ePUB, 画像などに変換可能
- 階層的な構造を書く文章に向いている。レイアウトに気を取られる事がないため、階層構造に集中して執筆ができる
R Markdown作成の流れ
RStudioをインストールしていれば普通にR Markdownが使える。
試しに、
library(rmarkdow)
pandoc_available()
と入力してみて、コンソールに下記表示が出ればOK。
R Markdown作成の流れとしては、
- R Markdownの新規作成
- 内容を記述
- Knit してレンダリング
- ドキュメントを確認
- 2-4を繰り返す
という感じ。
R Markdownの新規作成
File > New File > R Markdown…
で新規作成。
- Documentを選択
- Title: ドキュメントのタイトル
- Author: 作成者の名前(自分)
- Default Outut Format: html
に設定してOKを押す(基本、HTML)。
デフォルトで、ヘッダやチャンクの例が現れる。
内容を記述
YAMLヘッダ (YAML metadata section)
YAMLヘッダ (YAML metadata section) はファイルの書式。
新規作成時に入力した、
- 文書のタイトル (Title:)
- 作成者名 (Author:)
- 日付 (date:)
- 出力形式 (Output:)
が記入済みの状態になっている。
---
title: "mom-neuroscience"
author: "mom-Dr"
date: "1/1/2021"
output: html_document
---
YAMLヘッダで設定できるオプションは十数個以上ある。
以下は私個人の設定の備忘録 ▼
日付を「現在の日付」に設定 (date:)
Sys.Date()
で作業現在の日付に変更できる。
---
title: "mom-neuroscience"
author: "mom-Dr"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output: html_document
---
設定内容の詳細は
「【R Markdown】現在の日時を記入:Sys.Date(), Sys.time()」
に別途記載。
R Markdown で新規作成すると、ヘッダに日付が入力されるが、それを「現在の日時」にする方法。 現在の日付を記入: Sys.Date() Sys.Date() で、現在の日付を挿入できる。 私が設定している方法は下 …
アウトプット形式 (output:)
アウトプット形式については、後ほどまとめて記載(アウトプット形式へジャンプ)。
その他
-
highlight: コードシンタックスのハイライト法(eg. zenburn)
-
md_extensions: 日本語で書く場合(eg. -ascii_identifiers)
-
self_contained: TRUE で、js, CSS, 画像データなどを html ファイルに埋め込む
-
lightbox: TRUE で、画像をクリックしたらポップアップさせる
チャンク(Chunk)
チャンク(Chunk)とは、実行コマンドを書き込む部分のこと。
```{r}
と
```
で囲む。
最初の
```
の行は チャンクYAMLヘッダ(Chunk header)。
このチャンク内では、パッケージやデータの読み込み、オブジェクトの生成、データハンドリング、可視化など、Rと同じ事ができる。
- チャンク内にR
- チャンク外にMarkdown
というイメージ。
コマンドを部分的に実行
各チャンク内のコマンドは、チャンク左上の再生ボタンをクリックして確認できる。
チャンクラベル
チャンクラベルは
{r チャンクラベル}
で指定し、
r
と
チャンクラベル
の間には
,
は入らない。
チャンクラベルは、cache オプションを付ける場合に重要となる。
また、あとからRmdファイルを読む際にわかりやすくなるため、極力つけたほうがよい。
ただし、チャンクラベルはドキュメントで同一のものがないように気をつける。
※ cache オプションについては、【R Markdown】 cache オプションに別途記載。
R Markdown で使用するチャンクには、 {r チャンク名} でチャンク名をつける事ができます。 ほとんどの場合、チャンク名をつけなくても問題はないのですが、 cache オプションをつけるときには、チャンク名が重 …
チャンクのオプション
チャンクの
{r}
の箇所に、
{r チャンクラベル, オプション1, オプション2, ...}
といった感じでオプションを追加できる。
チャンクオプションの種類は数十種類……。
色々なチャンクオプション
| オプション | デフォルト | 内容 |
|---|---|---|
| eval | TRUE | チャンク内のコードを評価するかどうかを指定 |
| echo | TRUE | チャンク内のコードをドキュメントに表示させるかどうかを指定 |
| include | TRUE | 実行後にチャンクの内容をドキュメントに含めるかどうかを指定 |
| result | markup | 実行結果をどう出力するかを指定。
|
| cache | FALSE | 実行した結果をキャッシュするかどうかを指定。キャッシュすると、次回以降コード内容に変化がなければ実行をスキップしてキャッシュを利用する。dependsonと併用したほうがよい。 |
| error | FALSE | R コードの実行時のエラーをどうするか指定。
|
| warning | TRUE | R コードを実行した際の warning (警告) をドキュメントに表示させるかどうかを指定。 |
| message | TRUE | コードを実行した際の message をドキュメントに表示させるかどうかを指定。 |
| tidy | FALSE |
を加えると、自動的にコードを読みやすい形に整形してくれる。 |
tidy
オプションを使うためには、予め
formatR
パッケージを読み込んでおく必要がある。
install.packages("formatR", repos = "http://cran.rstudio.com")
# or development version
options(repos = c(yihui = "https://yihui.r-universe.dev", CRAN = "https://cloud.r-project.org"))
install.packages("formatR")
#読み込み
library(formatR)
でも、tidyオプションなしでも見やすい記述をできるだけ心がけたい。
チャンクオプション:プロット(plot)
R Markdown は作図の結果も出力できる。
その際、オプションに情報を追加して、図のサイズや解像度を指定可能。
R Markdown で Figures のサイズを設定する方法3つ。 YAML ヘッダーで設定する 最初の YAML ヘッダーで指定できる。 --- title: "My Document" output: html_ …
-
fig.height: 図の高さ。単位はインチ。デフォルトは7
-
fig.width: 図の幅。単位はインチ。デフォルトは7
-
fig.align: 図の位置。デフォルトは
"left"。
"right"で右揃え、
"center"で中央揃えになる。
-
fig.cap: 図のキャプション
-
dpi: 図の解像度。デフォルトは72。論文では300必要
チャンクオプションを予め設定しておく
ドキュメントの最初に、チャンクオプションを予め全部設定しておくと便利。
knitr::opts_chunk$set(echo = FALSE, include = FALSE, message = FALSE, warning = FALSE, error = FALSE, comment = NA, cache = TRUE, R.options = list(width=220), fig.align = 'center', out.width = '75%', fig.asp = .75)
この設定は、セットアップチャンクなど RMarkdwon の最初の方に記述しておき、デフォルトとしておく。
そして、設定を変更したいチャンクがあれば、そこのチャンクだけ個別に設定すると良い。
必要なパッケージをインストールして読み込む
必要なパッケージは、
install.packages ("○○")
でインストールする。
e.g.
install.packages("tidyverse", dependencies = TRUE)
install.packages("rmarkdown", dependencies = TRUE)
install.packages("knitr", dependencies = TRUE)
install.packages("systemfonts")
install.packages("remotes")
remotes::install_github("Gedevan-Aleksizde/fontregisterer", repos = NULL, type = "source")
install.packages("tidyverse")
install.packages("devtools")
install.packages("data.table")
install.packages("sf")
インストール済みのパッケージは、画面右下ペインの “Packages” で確認できる。
各パッケージの名前の左にある □ にチェックを入れると、読み込みしてくれる。
もしくは、スクリプト or コンソールに
library()
と入力する。
必要なものはだいたいインストール済みなので、新規ドキュメントを開いたら、デフォルトで読み込んでおく。
library(tidyverse); library(ggbeeswarm); library(readxl); library(lmerTest); library(Hmisc); library(corrplot); library(ggsci); library(RColorBrewer)
Markdown文法
HTMLの知識があると、覚えやすい。
見出し
見出しには
#
を使う。
# の数が見出しの深さになる。
- #: h1
- ##: h2
- ###: h3
- ####: h4
# 見出し1
## 見出し2
### 見出し3
#### 見出し4
改行
Markdownにおける改行は、「2回改行する」。
1回だと改行として認識されない。
文章1
文章2
Output: 文章1 文章2
文字の装飾
- 太字:
** ** - 斜体:
* * - 取り消し線:
~~ ~~ - 下線:
<u> </u> - 上付き:
^ ^ - 下付き:
~ ~ - 文字色:
<span style="color: 色を指定;"> </span>
※ 文字色はマークダウンがないので、普通に html で指定する。
**太字**
*斜体*
~~取り消し線~~
<u>アンダーライン</u>
<span style="color: blue; ">青文字</span>
Output: 太字 斜体取り消し線アンダーライン 青文字
箇条書き
番号なしの場合は、
*
または
-
の後に半角スペースを1字入れる。
2文字以上の字下げで下位項目を追加。
*
と
-
が混ざっていても影響しない。
- 項目1
- 項目1-1
- 項目1-2
- 項目1-2-1
- 項目1-2-1-1
- 項目1-2-2-2
- 項目2
- 項目3
番号ありの場合は、
*
や
-
の代わりに数字とドット(eg. 1.)を入れる。
1. 項目1
1. 項目1-1
2. 項目1-2
1. 項目1-2-1
2. 項目1-2-2
2. 項目2
3. 項目3
コード
基本、上記のチャンク
```{r}
```
でコードを挿入するが、チャンクじゃなくてもコードを入れることができる。
文章中にコードを入れたい場合は、
`
と
`
ではさむ。
これを「インラインチャンク」と呼ぶ。
文章中の コードは`r format(Sys.Date())` という感じ。
複数行のコードを記述する場合は、
```
と
```
ではさむ。
```
x <- "abc"
print(x)
```
区切り線
区切り線には
---
または
***
を使う。
---
Output:
表
表は Markdown でも作れるが、手間だし、R で作成した内容を簡単に表にできるので、そちらを利用した方がよい。
念の為、Markdown での作り方を書き留めておく。
Markdown で表を作る際、行は改行で、列は
|
で区切られる。
表の第1行はYAMLヘッダ扱いとなり、YAMLヘッダと内容の区分は
|---|
で区切る。
|ID |Age |Sex |Score|
|:--:|---:|---|----:|
|120 |76 |M |29 |
|214 |81 |F |28 |
|356 |64 |F |21 |
|489 |55 |M |18 |
1行目はYAMLヘッダ扱いとなり、太字で中央揃えになる。
2行目以降はデフォルトで左揃えになる。
-
|--|デフォルト。左揃え。
-
|:--|左揃え
-
|--:|右揃え
-
|:--:|中央揃え
---
は、1個以上であれば何個でもOK。
画像
画像は、
[代替テキスト](ファイル名)
と入力する。
画像を html 内に埋め込みたい場合は、[代替テキスト] の前に「!」をつけて、

と入力すればOK。
ワーキングディレクトリに画像があれば、ファイル名だけでOKだが、別の場所にある場合はパスを指定する。

Output:
机の上にある本
画像のサイズ変更
画像のサイズを変更したい場合は、

の後に
{width=" "}
でサイズを追加する。
width だけ追加すると、縦横比を保ったままサイズが変更される。
widht=” ” hight=” ” で両方指定もできる。
{width="300"}
Output:
机の上にある本
ハイパーリンク
ハイパーリンクは、
[テキスト](URL)
という形式で入力する。
私の読書ログへの[リンク](https://reading-log.mom-neuroscience.com/)
Output:私の読書ログへのリンク
脚注
脚注は
- 文末脚注を入れる箇所に
[^固有識別子]を挿入
- 実際の脚注の内容を
[^固有識別子]: 内容のように入力
脚注を入れる[^1]。
[^1]: 脚注の説明。
Output: 脚注を入れる1 1脚注の説明。
数式
数式は、
$数式$
という形で埋め込む。
したがって、$x=0.98$ となる
文章中ではなく、まとまった数式ブロックとして挿入したい場合は、
$$
という形で記述する。
したがって、下記公式が成り立つ。
$$
a + b = e
c + d = e
なら
a + b + c + d = 2e
$$
引用
引用を入れる場合は、文章の最初に
>
を入れる。
>
の後には半角スペースを1つ入れる。
> 引用する文章を記述。
> 複数行にまたがる場合は、
> それぞれの行頭に > を入れる。
コメント
R Markdown のコメントは、
- タイトル部分:
#コメント - Markdown内:
<!--コメント--> - チャンク内:
#コメント
とする。
出力(レンダリング)
- html
- word
などにレンダリング(Knit)できる。
その際、output 形式を色々指定しておくことが可能。
output 形式は、YAMLヘッダの
output:
で指定する。
よく使う output 形式は後述。
HTMLでレンダリング
研究ノートとして保存したり、誰かにプレゼンしたりするときには、HTMLが最適。
Knit > Knit to HTMLでレンダリングする。
ファイル名を入れて、任意の場所に保存する。
HTML形式でレンダリングされる。
YAMLヘッダに目次を入れて追尾にしておくと、左側に追尾目次が作成される。
output: html_documentの個人設定と解説は後述。
Word でレンダリング
Word でのレンダリングが求められるのは、主に論文作成やレポート提出のとき。
私は、論文作成のときはまだ他のソフトを併用しているが、将来的に R Markdown で完結できたらいいなと思う。
レンダリングの方法は、Knit > Knit to Word。
output: word_documentの個人設定と解説は後述。
論文作成に必要なパッケージや手順については、別途記載予定。
PDFでレンダリング
PDF化の場合、TeX環境が必要となる。
“tinytex” をインストールする。
install.packages(c("tinytex","rmarkdown'))
tinytex::install_tinytex()
日本語が含まれている文書をレンダリングする場合は、エラーが表示される。
それを回避するためには、日本語TeX環境を整え、YAMLヘッダを修正する。
参考サイト ▼
グラフに日本語が含まれる場合 ▼
Ubuntu14.04とRで、knitrで日本語のPDFを出力するための設定方法をお伝えします。 Rでの作業は…
アウトプット形式の色々
色々なアウトプット形式が選択できる。
| 出力形式 | ファイル形式 | 特徴 |
|---|---|---|
| html_document | *.html | html形式のドキュメントを生成。Webブラウザで閲覧でき、CSSによるスタイル設定やjavaScriptを活用した動的なコンテンツも活用できる。 |
| pdf_document | pdf形式のドキュメントを生成。pdfファイルへ出力するには、実行するマシンに Tex 環境を入れておく必要がある。 | |
| word_document | *.docx | Microsoft Word の docx 形式のぢ球面とを生成。生成された docx ファイルは Word で開いて編集できる。 |
| odt_document | *.odt | Open Document フォーマットのドキュメントを生成。生成された odt ファイルは LibreOffice などのアプリケーションで開いて編集/閲覧できる。 |
| rtf_document | *.ftf | Rich Text フォーマットのドキュメントを生成。 |
| md_document | *.md | Markdown 形式のドキュメントをせいせ。生成された md ファイルは各種エディタやビューワソフトで編集/閲覧できる。 |
| github_document | *.md | Github compatible markdown |
| ioslides_presentation | *.html | ioslides という javaScript ライブラリを利用した html 形式スライドを生成。html ファイルで出力され、ブラウザでスライドを表示できる。 |
| slidy_presentation | *.html | slidy という javaScript ライブラリを利用した html 形式スライドを生成。html ファイルで出力され、ブラウザでスライドを表示できる。 |
| beamer_presentation | TeX の beamer クラスを利用した pdf 形式スライドを生成。pdf ファイルで出力される。生成には実行するマシンに TeX 環境が必要。 |
以下、使用頻度の高い下記3つについての個人用テンプレート。
---
title: "Project Title"
author: "My name"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output:
html_document:
number_sections: yes
theme: cerulean
toc: yes
toc_float: yes
toc_depth: 3
df_print: kable
word_document:
toc_depth: 3
number_sections: yes
reference_docx: ../フォルダ名/ファイル名.docx
always_allow_html: yes
bibliography: ../Data/references.bib
csl: ../Data/brain.csl
ioslides_presentation:
widescreen: yes
smaller: yes
---
“○○_document” は output: の下位項目なので、字下げを行う。
“それ以下の項目” は、”html_document” の下位項目なので、更に字下げする。
使わないアウトプットは、
#
でコメントにしている。
e.g. 共著者に word document を送りたいだけのとき ▼
---
title: "プロジェクト名"
author: "私の名前"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output:
# html_document:
# number_sections: yes
# theme: cerulean
# toc: yes
# toc_float: yes
# toc_depth: 3
# df_print: kable
word_document:
toc_depth: 3
number_sections: yes
reference_docx: ../フォルダ名/ファイル名.docx
always_allow_html: yes
bibliography: ../フォルダ名/ファイル名.bib
csl: ../フォルダ名/ファイル名.csl
# ioslides_presentation:
# widescreen: yes
# smaller: yes
---
1. html_document
---
title: "Setting for html_document"
author: "mom-doc"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output:
html_document:
number_sections: yes
theme: cerulean
toc: yes
toc_depth: 3
toc_float: yes
df_print: kable
---
通し番号をつける (number_sections:)
number_sections
: 見出しに通し番号をつけるかどうか
- デフォルトは FALSE。これを TRUE にすると、見出しに通し番号が付く。後述の目次をTRUEにすると、その目次内でも通し番号が出力される。
テーマを指定する (theme:)
R Markdown にはいろいろなテーマが用意されている。
デフォルト (default) でも良いが、私は ceruleanを使用。
テーマのデザインはこちらのHPを参照 ▼。
https://www.datadreaming.org/post/r-markdown-theme-gallery/…
目次をつける (toc:)
後述の方法で、# を使って文章に見出しをつけていくと、自動的に目次が生成される。
- # : 章
- ## : 節
目次のコードは
toc
(table of contentsの意味)。
-
toc: 目次の出力有無
- デフォルトは FALSE。これを TRUE にするとを出力する。
-
toc_depth: 目次の深さを指定
- デフォルトは 3。これは h3 まで見出しに含む、という意味。この数字を変更して、どの深さの見出しまでに含むかを指定。
-
toc_float: 目次のフローティング
- デフォルトは FALSE。これを TRUE にすると、目次が文書の左側に位置し、文書をスクロールしても目次が追尾するようになる。
データフレームの表示 (df_print:)
HTML系フォーマットには
df_print
というオプションがある。
df_print
オプションは “Data Frame Print” の略で、データフレーム型のデータを表示する方法を指定するためのオプション。
df_print
で指定できる値は4種類。
| 値 | 出力形式 |
|---|---|
| default | Rでdata.frameを表示した時に使われるテキスト表形式 |
| kable | シンプルな表形式 |
| paged | ページ区切りのついたインタラクティブな表形式。列数が多いと自動的にスクロール表示になる。 |
| tibble | tibbleクラスを用いた簡易なテキスト表形式 |
上記のうち、表と呼べるのは、kable と paged の実質2種類。
私は kable に設定(内容が長い場合は paged)。
その他、追加パッケージで、凝った表も作成可能。
2. Word_document
---
title: "title"
author: "mom-doc"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output:
word_document:
number_sections: yes
toc_depth: 3
always_allow_html: yes
reference_docx: ../フォルダ名/ファイル名.docx
bibliography: ../フォルダ名/ファイル名.bib
csl: ../フォルダ名/ファイル名.csl
---
tnumber_sections
と
toc_depth:3
については前述の通り。
always_allow_html
を TRUE にしておく。
reference_docx, bibliography, cslに指示を与える。
また、下記3点は、同じフォルダ (eg. “RmdData”) に1つにまとめておく。
- docx スタイル
- bib ファイル
- cls ファイル
呼び出すときは、
reference_docx: "D:/R/R directory/Ref_Styles/Style_Manuscript.docx"
bibliography: ../RmdData/References.bib
csl: ../RmdData/Lancet.csl
のような感じ。
“./” で、「同じフォルダ内」という意味。
一つ上の階層だったら “../” と書く。
reference_docx の場合は、相対パスではなく絶対パスを使う。
wordの書式スタイルを指定 (reference_docs:)
wordの書式スタイルの参考先を記述する。
reference_docs: ../フォルダ名/ファイル名.docx
書式スタイルの作り方は以下が効率的。
- Markdown の構成要素や図表を出力するRチャンクを含んだ Rmd ファイルを準備
- その Rmd ファイルを word_document でレンダリング
- 生成された docx ファイルを Word で開き、Word 上でスタイルを設定
- 設定した docx ファイルを名前をつけて保存 (e.g. “word-styles”)
- .Rmd ファイルで、
reference_dox:で、保存した docx を指定 (e.g.
reference_docx: ../フォルダ名/ファイル名.docx)
参照したいwordファイルが同じフォルダ内にある場合:
reference_docx: ファイル名.docx
参照したいwordファイルが一つ上の階級にある別のフォルダにある場合(相対パス):
reference_docx: ../フォルダ名/ファイル名.docx
参照したいwordファイルを絶対パスで指定する場合(例はDドライブ内のR/Rディレクトリ内のフォルダを参照)
reference_docx: D:/R/R directory/フォルダ名/ファイル名.docx
参考文献を挿入: bib データ (bibliography:)
bib データは、載せたい文献の情報が書かれたファイル。
bib データは、pubmed や Google Scholar から入手可能 (入手方法は別途記載予定。)
最終的に原稿に載せる論文をひとつの bib データとしてまとめる。
私は、文献管理に ReadCube を使用しており、
Need literature management for your research driven company?…
必要な論文をまとめて bib ファイルとしてエクスポートしている。
.Rmd ファイルで、
bibliography:
で、保存した bib を指定 (e.g.
bibliography: ../RmdData/References.bib
)
参考文献を挿入: csl データ (csl:)
csl データは、投稿先のジャーナルの形式の情報が書かれたファイル。
下記から入手 ▼
…
.Rmd ファイルで、
csl:
で、保存した csl を指定 (e.g.
csl: ../RmdData/the-lancet-neurology.csl
)
3. ioslides_presetation
---
title:"title"
author: "mom-doc"
date: '`r format(Sys.Date(), "%B %d, %Y")`'
output:
ioslides_presentation:
widescreen: yes
smaller: yes
---
R Markdownのプレゼンテーション形式は3種類。
- ioslides形式: 出力ファイルは.html
- slidy形式: 出力ファイルは.html
- beamer形式: 出力ファイルは.pdf
作り方については、下記参照 ▼
The first official book authored by the core R Markdown deve…
私は、
wdescreen
と
smaller
のみ設定。
ディスプレイモード (widescreen:)
ディスプレイモードは、下記5つ。
- ‘f’ : フルスクリーン・モード
- ‘w’ : ワイドスクリーン・モード
- ‘o’ : オーバービュー・モード
- ‘h’ : コードハイライト・モード
- ‘p’ : プレゼンター・ノート
文字の大きさ (smaller:)
TRUE にすると、プレゼンテーションの文字サイズを小さくできる。
References
This book showcases short, practical examples of lesser-know…
This document will introduce participants to the basics of R…
https://cran.r-project.org/web/packages/plyr/plyr.pdf…
今回はR Markdown環境を導入し、レポート作成の手順を説明します。実際に簡単なレポートづくりを体験して、R Mar…
この記事の目的 私が大好きなRMarkdownについて、Tipsを集中的に連載しようという思いつきの企画です。あと自分の…
http://landscapeportal.org/blog/2017/09/06/r-markdown-templa…
You can install formatR from CRAN, or yihui.r-universe.dev i…










