まず、マークダウン全体のオプション(グローバルチャンクオプション)を指定する。 PDFに出力する(LaTeX 使う)場合は、グラフィックデバイスに cairo を利用するが、HTML の場合には cairo を使いたくないので、knitr::is_latex_output() を利用して場合分けする。 以下のコードチャンクは、オプションに include = FALSE がついているので、出力されたPDFやHTML では非表示になる。 このチャンク(グローバルオプション)は常にYAMLヘッダのすぐ下に書くべきである。

準備

tidyverse パッケージを読み込む。パッケージのインストールは一度すれば済むが、library() を使ったパッケージの読み込みは、Rを起動するたびに行う必要がある。

library(tidyverse)
## 図のなかで日本語を使えるようにする
## フォントの設定はお好みで
## (Unix/Linux ではIPAexフォントのインストールが必要かも)
library(fontregisterer)
if (.Platform$OS.type == "windows") { # Windows
  my_font <- "Yu Gothic"
} else if (capabilities("aqua")) { # macOS
  my_font <- "Hiragino Sans"
} else { # Unix/Linux
  my_font <- "IPAexGothic"
}
theme_set(theme_gray(base_size = 9,
                     base_family = my_font))

Rマークダウンの書き方・使い方

マークダウンファイル (r-markdown.Rmd) とそのファイルを元に生成されたPDFファイル (PDFを開いているならそのファイル)(r-markdown.pdf)と htmlファイル(インターネットブラウザで読んでいるならそのファイル)(r-markdown.html) を見比べながら、RStudioでRマークダウンファイルを扱えるようにするのが今日の目標である。

このマークダウンをそのまま使うためには、担当教員が作ったスタイルシート(my-markdown.css)をプロジェクトのフォルダに保存する必要がある。 スタイル(表示されるページの見た目)をカスタマイズしたいときは、このファイルを変更すればよい。デフォルトのスタイルのままで良いとき(あまり良くないと思うが)は、ヘッダの’css’オプションの指定をやめる(このRmdファイル [htmlではない] のYAMLヘッダ部分にある css: my-markdown.css の行を削除する)。

この資料と同じ画像を表示するためには、画像ファイルも同じフォルダに保存する必要がある。自分でもっている画像(写真)に置き換えて試してほしい。

マークダウン記法を利用した文章の書き方

文章は、いつもどおり書けばよい。 文章の一部をイタリック(斜字体)にしたいときは、イタリックにしたい部分を * または _ で挟むと、this is italic あるいは this is also italic となる(日本語は斜字体にしない)。 太字は、**(*を2つ) または __(_ を2つ)で挟むと、ここが太字 または ここも太字 となる。 太字のイタリックは、*** (*を3つ)または ___(_を3つ)で挟むと、here is bold italic または here is also bold italic となる。

改行するときは、文章の間を1行以上空ける。

箇条書きは、* または _ を利用し、

  • 項目1
  • 項目2
    • 項目2-1
    • 項目2-2

あるいは、

  • 項目1
    • 項目1-1
    • 項目1-2
  • 項目2

のようにできる。* や - の後には半角スペースを挿入する。箇条書きを入れ子にするとき、字下げは Tab で行う

番号付きの箇条書きは、数字で作れる。

  1. First item
  2. Second item
    1. What?
    2. How?
  3. Third item

のようにする。入力する際にすべて「1.」にしても、自動的に1, 2, 3, … とうい番号が割り当てられる。全部1にしておくと、後から項目の並べ替えができるので楽である。(1でなくても並べ替えられるが、数字の意味が不明になる。)

ヘディング (heading) は、“#” (ハッシュ記号) で作れる。 論文・レポートを書くときは、ヘディングを利用して文章を構造化する。 # の数が少ないほど、上位のヘディングになる。Rコードのコメントと同じ記号だが、その役割はまったく異なるので誤解しなように注意されたい

例を以下に示す。

ハッシュ1つのヘディング

ハッシュ2つのヘディング

ハッシュ3つのヘディング

ハッシュ4つのヘディング

論文・レポートでは、以下のようにヘディングを使い分ける。

  • #: 節(セクション, section)
  • ##: 小節 (subsection)
  • ###: 小節以下の見出し (subsubsection)
  • ####: (あまり使わない)

また、リンクを貼ることもできる:矢内のウェブサイト

画像も貼れる:いらすとやの猫

(出典:いらすとや

画像へのパス (path) が通っていないと表示されないので注意。

HTMLに出力する場合は、HTMLを直接書くこともできる(PDFに出力する場合はうまくいかない)。

\(\ast\) 数式の書き方

LaTeX と同じように数式を書くこともできる。 文章中と同じ行に数式を書きたいときは、$で挟む。 たとえば、\(\bar{x} = \sum_{i=1}^n x_i / n\) と、する。

数式を独立したブロックとして書きたいときは、$$で挟み、 \[ \sigma^2 = \frac{\sum_{i=1}^n (x_i - \mu)^2}{n} \] のようにする。

コードチャンクの書き方

Rのコードは、コードチャンクと呼ばれる部分に書き込む。 コードチャンクは、たとえば以下のように書ける。

a <- 1:10
b <- -1:-10

Rコードチャンクの始めには、3つの「`」の後に{r}をつける。 rとスペースの後({}の中)には、チャンクの名前を付ける。 好きな名前を付けてよいが、他のチャンクとまったく同じ名前は付けられない(つまり、各チャンクが異なる名前をもつ必要がある)。 チャンクの終わりには3つの「`」を書く。 RStudioで開いたRマークダウンファイル内でコードチャンクを作るには、次のショートカットキーを使った方がよい。

  • macOS: cmmandd + option + I または control + option + I
  • Windows: Ctrl + Alt + I

I は Insert (チャンクを「挿入する」)の頭文字である。macOS

文章中にRコードを書きたいときは mean(x) のように、Rのコマンドを`の間に書く。 関数を実行(評価, evaluate)した後の結果を文章中に入れたいときは、「$a$ の平均値は ` r mean(a) ` です」のように “r” を入れて書くと、「\(a\) の平均値は5.5 です」となる。つまり、mean(a) というコマンド をRが実行し、その結果を文章の中に入れてくれる。この方法を使えば、文章と別にRのコマンドを実行しなくても、Rの実行結果を表示することができる。

図を含めた文章も作れる。チャンクオプション fig.cap で図のキャプションが指定できる。

p <- tibble(x = rnorm(100, mean = 0, sd = 1)) %>% 
  ggplot(aes(x = x)) + 
  geom_histogram(binwidth = 1, color = "black", fill = "tomato") +
  labs(y = "度数", title = "ヒストグラム")
plot(p)
トマト色のヒストグラム

トマト色のヒストグラム

何もオプションを指定しない状態では、チャンクは1行ずつ評価され、結果も順番に次々出力される。 たとえば、

sd(a)
## [1] 3.02765
var(a)
## [1] 9.166667

チャンクの最後まで評価してからまとめて結果表示したいときは、チャンクオプションresults を’hold’にする。 オプションは、チャンク名の後に「,(comma)」を打ち、その後に書く。 例えば、{r example-option, results = 'hold'} とチャンクの冒頭に書くと、

sd(a)
var(a)
## [1] 3.02765
## [1] 9.166667

となる。

チャンクオプションについてより詳しくは ココ などを参照されたい。

また、Rマークダウン全般(特に、RStudioを使う場合)については、ココ を参照。

Rマークダウンのチートシート(PDFファイル



授業の内容に戻る