R Markdownで楽々レポートづくり

第3回 レポつく自由自在~R Markdown基礎文法最速マスター

この記事を読むのに必要な時間:およそ 5 分

チャンクラベル

コードチャンクの書式は次のようなものです。

```{r plot-one-to-ten, fig.width=3, fig.height=3, echo=FALSE}
# コード
plot(1:10)
```

コードチャンクのヘッダ行ではチャンクラベルを指定できます。上の例ではplot-one-to-tenがチャンクラベルです。チャンクラベルは,そのチャンクにより出力されるグラフのファイル名,キャッシュ時のファイル名,チャンクコードの再利用時のラベル指定など,色々な用途に使われます。ラベルを指定しなければ暗黙的にラベル名が設定されますが,特に長くてややこしいレポートを作成するときなどはチャンクラベルを明示的に指定しておくとよいでしょう。

チャンクオプション

チャンクラベルに続けて,オプション名=値という形でチャンクオプションを指定できます。上の例では,fig.width=3, fig.height=3, echo=FALSEとして3種類のオプションを指定しています。チャンクオプションによって,そのチャンクについての処理を細かく制御できます。例えば出力するグラフのサイズを変更する,コードの表示・非表示を設定する,結果の出力の方法を変更するといったことが可能です。

チャンクオプションの一括指定

knitr::opts_chunk$set(echo=FALSE)

のようにすることで,このチャンクより後の全てのチャンクに同じオプションを適用できます。opts_chunk$set()により指定したチャンクオプションは,チャンクヘッダ行でのオプション指定により上書きされるので,R Markdownの先頭のほう(例えばセットアップチャンク)でデフォルトの動作を一括指定しておいて,デフォルト以外の動作をさせたいチャンクでは,チャンクヘッダで指定する,といったことが可能です。

よくできていますね。

使えるチャンクオプションランキング

今回の記事は少し固めの内容だったので,ここからは趣向を変えて,レポートづくりに苦労しているひなさんとR Markdownエキスパートの玲さんの姉妹二人の会話形式で,レポートづくりに使えるチャンクオプションを抜粋して紹介します。チャンクオプション神7と呼ばれているとかいないとか。

これ以外にもたくさんのオプションがありますので,公式サイト(英語)ドキュメント生成本匿名知的集団ホクソエムのお笑い担当teramonagiさんによるまとめ記事などを参考にしてください。

第7位:child

ひな パパに頼まれたデータ解析,超ややこしすぎて,このR Markdownファイルすでに1000行オーバー。編集したい場所を探すだけでも一苦労よ。これでごほうびヤクルト1本って,どんだけブラックなのよ。

  確かにブラックよね。わたしにもそんな時代があったわ~。でもね,そんな時は解析コードを別のR Markdownファイルに書いておいて,childオプションを指定すればいいのよ。

ひな どゆこと??

  まずc01.Rmdとかc02.RmdとかのR Markdownに解析コードを書くのね。本当は解析の内容がわかるようなファイル名をつけとくといいわ。で,チャンクオプションでchild="c01.Rmd"とかすれば,そのコードチャンクの内容がc01.Rmd`で置き換えられるのよ。実際に使ってみるといいわ。

```{r c01, fig.width=8}
# 子となるR Markdown(c01.Rmd)
plot(1:10)
```
```{r c02}
# 子となるR Markdown(c02.Rmd)
knitr::kable(head(iris))
```
親となるR Markdownparent.Rmd

# プロット

```{r child="c01.Rmd"}
```

# テーブル

```{r child="c02.Rmd"}
```

  こういうレポートができるわ。

ひな なにこれ,このR Markdown超見やすくなってるじゃない!! これならどんだけややこしい解析コードでもR Markdownの編集の邪魔にならないわ~。Cの#includeみたいなもんね。

著者プロフィール

高橋康介(たかはしこうすけ)

東京大学先端科学技術研究センター特任助教。専門は認知科学,認知心理学,認知神経科学。どうやったら人が幸せな気持ちになれるのか研究中。著書に「R言語上級ハンドブック」(分担執筆・C&R研究所),「ドキュメント・プレゼンテーション生成」(共立出版)。趣味はラテ・アート。