R Markdownは分析のレポートを書きつつRの実行も行うことができる文書形式で、Rの実行結果(表や図など)を埋め込んだ文書を生成することができる。
(もともとMarkdownという文書を作成するための簡単な言語(マークアップ言語)があり、そこにRの要素を追加したものがR Markdown)
R Studioで新規ファイルを作成する際に「R markdown」を選ぶことで作成できる。
(R Studioから必要なパッケージのインストールが提案された場合は受け入れる)
Rmdファイルは新規作成された段階から下図のようにコードの例が記入されている
毛糸のアイコンをクリックすると文書が作成される
ページ上部にあるこの部分はyamlフロントマター(yaml front matter)と呼ばれ、タイトルや作成日などの文書のメタ情報や出力形式の設定を記述することができる。
例えばoutput
をpdf_document
に変更した場合、文書はpdfの形で生成されるようになる。wordで出力したい場合はword_document
にすればよい。
「`」で囲った文字はこのように
フォントと背景色が変化する。
2つの「```」で囲ったブロックは
このようになる
コードブロックは1つ目の「```」を「```{r}」のように書いているプログラミング言語を指定することで文字色が文法に応じて塗り分けられたり、Rの場合は文書作成時に中身が実行される。
## 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のコードブロックを挿入することができる。
順序なしの箇条書きは-
あるいは*
で書くことができる
順序付きの箇条書きは1., 2., ...
のように書く
TeX記法とよばれる記法を用いて数式を入れることができる。
文中に\(y =
f(x)\)のように入れたい場合は$y = f(x)$
のように$
で囲う。
数式の段落を入れたい場合は$$
で
のように囲うと
\[ \frac{1}{n} \sum^n_{i=1} x_i \]
のように出力される。
記号 | 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 など |
Rmarkdownの話からは離れるが、DAG(directory acyclic graph; 有向非巡回グラフ)の描画の方法についても紹介する。
もともとGraphvizというグラフ描画ツールがあり、DAGを書くために広く使われてきた。
{DiagrammeR}
パッケージを使うとRからGraphvizを呼び出すことができる。
GraphvizではDOT言語という独自の言語を用いてX -> Y
のようにグラフを描画する。
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の設定