R Markdownは分析のレポートを書きつつRの実行も行うことができる文書形式で、Rの実行結果(表や図など)を埋め込んだ文書を生成することができる。

(もともとMarkdownという文書を作成するための簡単な言語(マークアップ言語)があり、そこにRの要素を追加したものがR Markdown)

1 Rmdファイルの作成

R Studioで新規ファイルを作成する際に「R markdown」を選ぶことで作成できる。

(R Studioから必要なパッケージのインストールが提案された場合は受け入れる)

Rmdファイルは新規作成された段階から下図のようにコードの例が記入されている

毛糸のアイコンをクリックすると文書が作成される

2 Rmdの構造

2.1 yamlフロントマター

ページ上部にあるこの部分はyamlフロントマター(yaml front matter)と呼ばれ、タイトルや作成日などの文書のメタ情報や出力形式の設定を記述することができる。

---
title: "Untitled"
output: html_document
date: "2023-04-28"
---

例えばoutputpdf_documentに変更した場合、文書はpdfの形で生成されるようになる。wordで出力したい場合はword_documentにすればよい。

2.2 コードブロック

「`」で囲った文字はこのようにフォントと背景色が変化する。

2つの「```」で囲ったブロックは

このようになる

コードブロックは1つ目の「```」を「```{r}」のように書いているプログラミング言語を指定することで文字色が文法に応じて塗り分けられたり、Rの場合は文書作成時に中身が実行される。

summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 

RStduioではCtrl + Alt + IでRのコードブロックを挿入することができる。

2.3 その他のMarkdownの文法

2.3.1 見出し

見出しは#で設定できる

# h1見出し
## h2見出し
### h3見出し

2.3.2 箇条書き

順序なしの箇条書きは-あるいは*で書くことができる

- うに
- いか
* タコ
* イクラ

順序付きの箇条書きは1., 2., ...のように書く

1. a
2. b
3. c

2.3.3 リンク・画像

リンクを張りたい場合は次のように書く。

[タイトル](URL)

画像は次のように挿入する。

![キャプション(省略可)](画像のファイルパス)

2.4 数式の挿入

TeX記法とよばれる記法を用いて数式を入れることができる。

文中に\(y = f(x)\)のように入れたい場合は$y = f(x)$のように$で囲う。

数式の段落を入れたい場合は$$

$$
\frac{1}{n} \sum^n_{i=1} x_i
$$

のように囲うと

\[ \frac{1}{n} \sum^n_{i=1} x_i \]

のように出力される。

(参考)TeX記法の例

記号 TeX記法
\(\neq\)\(\geq\)\(\leq\) \neq\geq\leq
\(\frac{a}{b}\) \frac{a}{b}
\(\sum^n_{i=1}\) \sum^n_{i=1}
よく使われる関数(\(\log\)\(\ln\)\(\exp\)など) \log\ln\expなど
ギリシャ文字(\(\alpha\)\(\beta\)\(\gamma\)\(\delta\)など) \alpha\beta\gamma\deltaなど

3 (参考)DAGの描画

Rmarkdownの話からは離れるが、DAG(directory acyclic graph; 有向非巡回グラフ)の描画の方法についても紹介する。

もともとGraphvizというグラフ描画ツールがあり、DAGを書くために広く使われてきた。 {DiagrammeR}パッケージを使うとRからGraphvizを呼び出すことができる。

pacman::p_load(DiagrammeR)

GraphvizではDOT言語という独自の言語を用いてX -> Yのようにグラフを描画する。

3.1 シンプルなグラフの例

grViz("digraph dot{
  X -> Y
  U -> {X, Y}
}")

3.2 より詳細にオプションを設定したグラフの例

grViz("digraph dot{
  graph[rankdir = LR]
  node[shape = circle, fontname = 'Yu Gothic']
  edge[fontname = 'Yu Gothic']
  
  能力A -> 所得Y [label='10']
  学歴X -> 所得Y [label='500']
  能力A -> 学歴X [label='80≧の50%が進学']
  {rank = same; 能力A; 学歴X}
}")
  • graphはグラフ全体の設定をする箇所で、rankdir = LRはグラフの描画方向の設定である(左から右にしたいならLR、上から下にしたいならTB
  • nodeはグラフの頂点(node)に関する設定である
  • edgeはグラフの頂点をつなぐ矢印の設定である
  • {rank = same; 能力A; 学歴X}は位置を揃えたいnodeの設定