はじめに
前回までの記事でシンプルなレポートの作成方法はわかってもらえたと思います。ですが、
R Markdownには、
そこで今回と次回はR Markdownの文法として、
なお、
Markdown記法
Markdownとはシンプルなテキストによって文書構造を記述するための軽量マークアップ言語です。記述が簡単なHTMLのようなものだと思ってもらえばいいでしょうか。見出し
ここではレポート作りに役立つ記法を抜粋して紹介します。既にMarkdown記法に精通している方は読み飛ばしてください。
段落
ただの改行はスペースに変換されます。空白行が段落区切りになります。強制改行したい場合は、
あいうえお かきくけこ
さしすせそ
たちつてと
見出し(ヘッダ)
行頭に#
#
を重ねることで最大レベル6ヘッダまで指定できます。
リスト
行頭に*
で箇条書きリスト、1.
などで順序付きリストです。行頭に4つの半角スペースを入れることで入れ子もできます。
(HTMLでは)
- ビール
- ワイン
- 白ワイン
- 赤ワイン
- 日本酒
- 食べる
- 飲む
- 酔う
- 寝る
- 太る
水平線
レポートの見た目を整えるのに、-
テキスト修飾
文字列を記号で囲むことで就職修飾できます。
これは強調でこれは強い強調でこれは
とりけしでこれは文字通りの出力
で上付き下付きηp2など。
表
表はレポートに有効ですね。いくつかの記法があります。ここではパイプテーブルを紹介します。
種類 | 価格 | 度数 | 意識の高さ |
---|---|---|---|
ビール | 程々 | 程々 | 程々 |
ワイン | ピンきり | 高め | 高め |
日本酒 | ピンきり | 高め | 高め |
画像・ハイパーリンク
ハイパーリンクは[テキスト](リンクアドレス)
という形式です。
R Markdownの公式サイトはこちらです。
画像の挿入は![画像タイトル](アドレス "alt属性")
という形式です。
引用
行頭に>
で引用ブロックです。引用ブロック中で改行するには行末に2つの半角スペースをおきます。
> ここは引用に
> なります。
> 次の行です。
(HTMLでは)
ここは引用に なります。
次の行です。
他にも数式やコードブロックなどがあります。 さらに知りたい方はpandoc拡張マークダウンを参考にしてください。
コードチャンクの処理の制御
R Markdownファイルの基本形は次の通りです。
---
title: "タイトル"
author: "作成者"
date: "作成日"
output: html_document
---
```{r setup, include=FALSE}
# セットアップチャンク
# パッケージのロード、データ読み込みなど、Rオプション設定など
library(foo)
options(width = 1000)
dat = read.table("hoge")
knitr::opts_chunk$set(echo=FALSE) # 全てのコードチャンクに適用されるオプション
```
```{r analysis, include=FALSE}
# 解析コード
```
マークダウンテキスト ・・・
```{r table-head, echo=TRUE}
# 表の出力
knitr::kable(head(iris))
```
マークダウンテキスト ・・・
```{r plot-head, fig.width=5, fig.height=3}
# グラフの出力
plot(haed(iris))
```
マークダウンテキスト ・・・
一番上の---
で囲まれた部分はYAMLフロントマターと呼ばれるもので、
セットアップチャンク
YAMLフロントマターの後に、
Rのコードはコードチャンクに記述します。上の例では最初に、
```{r setup, include=FALSE}
# セットアップチャンク
# パッケージのロード、データ読み込みなど、Rオプション設定など
library(foo)
options(width = 1000)
dat = read.table("hoge")
knitr::opts_chunk$set(echo=FALSE) # 全てのコードチャンクに適用されるオプション
```
というセットアップチャンクを置いています。ここではパッケージの読み込みやRのオプション設定、
チャンクラベル
コードチャンクの書式は次のようなものです。
```{r plot-one-to-ten, fig.width=3, fig.height=3, echo=FALSE}
# コード
plot(1:10)
```
コードチャンクのヘッダ行ではチャンクラベルを指定できます。上の例ではplot-one-to-ten
がチャンクラベルです。チャンクラベルは、
チャンクオプション
チャンクラベルに続けて、オプション名=値
という形でチャンクオプションを指定できます。上の例では、fig.
として3種類のオプションを指定しています。チャンクオプションによって、
チャンクオプションの一括指定
knitr::opts_chunk$set(echo=FALSE)
のようにすることで、opts_
により指定したチャンクオプションは、
よくできていますね。
使えるチャンクオプションランキング
今回の記事は少し固めの内容だったので、
これ以外にもたくさんのオプションがありますので、
第7位:child
ひな パパに頼まれたデータ解析、
玲 確かにブラックよね。わたしにもそんな時代があったわ~。でもね、child
オプションを指定すればいいのよ。
ひな どゆこと??
玲 まずc01.
とかc02.
とかのR Markdownに解析コードを書くのね。本当は解析の内容がわかるようなファイル名をつけとくといいわ。で、child="c01.
とかすれば、
```{r c01, fig.width=8}
# 子となるR Markdown(c01.Rmd)
plot(1:10)
```
```{r c02}
# 子となるR Markdown(c02.Rmd)
knitr::kable(head(iris))
```
親となるR Markdown(parent.Rmd)
# プロット
```{r child="c01.Rmd"}
```
# テーブル
```{r child="c02.Rmd"}
```
玲 こういうレポートができるわ。
ひな なにこれ、#include
みたいなもんね。
第6位:opts.label
ひな あー、
玲 ?
ひな このレポート、
玲 それは確かに面倒ね。オプション一括指定じゃダメなの?
ひな それがダメなのよ~、
玲 そんなときにはチャンクオプションテンプレートの出番よ。
ひな なにそれ~
玲 いい? まずセットアップチャンクとかで、
```{r setup, include=FALSE}
library(knitr)
opts_template$set(
fig_small = list(out.width = 200, out.height = 200), # 小さいグラフ
fig_large = list(out.width = 500, out.height = 500) # 大きいグラフ
)
```
ひな それからそれから~?
玲 それから、opts.
オプションでテンプレート名を指定するのよ。
```{r fig1, opts.label="fig_small"}
curve(sin(x),-10,10)
```
```{r fig2, opts.label="fig_large"}
plot(iris)
```
```{r fig3, opts.label="fig_small"}
curve(cos(x),-10,10)
```
ひな 簡単ね!
玲 そうでしょ~。そして、
ひな すごい! これなら何回も書かなくてすむわ~。あ、
玲 よく気づいたね~。だから間違いも起こりにくくなるし、#define
マクロみたいなものよ。
第5位:warning
、error
、message
error
、message
ひな パッケージ読み込むとたまにメッセージ表示されることあるじゃない。レポートにマジ邪魔なんですけど~
玲 そんなときはmessage=FALSE
よ。
ひな 瞬殺ね……
玲 warning=FALSE
なら警告が非表示よ。あと、error=TRUE
ならそのチャンクのエラーを出力して、error=FALSE
ならエラー時点で変換処理が止まるわ。デフォルトは全部TRUE
よ。
第4位:fig.width
/fig.height
/out.width
/out.height
fig.height
/out.width
/out.height
ひな なにこれグラフちっさ!!
玲 あ~ほんとだ、
ひな レポートのグラフ大きくするの、
玲 out.
とout.
でレポートのグラフの大きさを指定できるわよ。このオプションの単位は、out.
とかすれば800ピクセル四方の領域にグラフが拡大縮小されて表示されるっていうこと。PDFのレポートならLaTeXの単位が使えるわ。out.
とかね。あなたLaTeX知ってる?
ひな もちろん! 毎晩、
玲 美文書には私もお世話になったわ、
ひな ところでおねえちゃん、fig.
とout.
ってなんか違うの?
玲 fig.
/fig.
はグラフを描画する画像ファイルとかPDFファイルのサイズを指定するのよ。単位はインチ。例えばHTMLレポートを作る場合、fig.
なら、dpi
はdot per inchの略で、out.
/out.
で指定された領域に拡大縮小されて表示されるってわけ。要するに、fig.
/fig.
はRがグラフを作成するときのサイズ、out.
/out.
はHTMLとかPDFに出力するときのサイズだと思っておけばいいわ。サンプルおいておくわね。わかりにくくてゴメンね~
ひな 大丈夫、
玲 それな
第3位:cache
ひな ビーッグ ビッグビッグ ビッグデータッ♫
玲 陽気ね……
ひな 違うわよ~、render()
のたびに解析してるから、
玲 ありがちね、
ひな え、
玲 あなた、cache=TRUE
のチャンクはキャッシュされるから、
ひな つまり、
玲 と思うでしょ? でも大丈夫。cache=TRUE
のチャンクで作られたオブジェクトはこっそりとファイルに保存されてるの。で、
ひな なにこれ捗るわ~
玲 キャッシュについては次回もう少し詳しく説明するかも。楽しみにしててね!
第2位:echo
ひな コードチャンクのコードって、
玲 つecho=FALSE
ひな m(_ _)m
第1位:include
ひな おねえちゃんのR Markdown、include=FALSE
ってあるけど、
玲 これはわたしのナンバーワンオプション、
ひな 載せない? どういうこと?
玲 include=FALSE
にしたチャンクは、
ひな なるほど、
玲 そうよ。でもこのオプション、include=FALSE
が好きなのに。
ひな へ~そうなんだ~。便利なのにね~。おねえちゃん、
まとめ
今回紹介したように、
気がつけばもう6月です。暦の上ではもう夏。そろそろ近所のビアガーデンも動き出した頃ではないでしょうか。R Markdownを駆使してさっさと仕事を片付けて、
Enjoy!!
次回は
次回はレポート出力を制御するためのパッケージオプション、