レポートをRStudioで作ってみる

前田和寛(@kazutan)
2014/7/25 SappoRo.R #3

自己紹介

  • 前田和寛(MAEDA Kazuhiro)
  • 比治山大学短期大学部 総合生活デザイン学科 講師
  • 「ぱそこん」のせんせー
  • @kazutan
  • #ビールうめぇ

今日のお話

  • よくある事例
  • Rでドキュメント生成
  • Markdown記法
  • Rのコード埋め込み
  • Tips

デモなどは、 当日のUst録画 をご覧ください。

よくある事例

こんなことってありませんか?

  • S(ピー)SSで分析した結果を報告するのにExcel起動して表を作り直してる…
  • Rで分析できたのはいいけど、分析結果をどうやってWordに記述しよう…
  • この大量のグラフを載せるのか…?
    • あとでやり直そうと思ったけど、どうやって分析したか忘れた…

ようするに…

要望をまとめるとこうなります:

  • 出した結果をそのままレポートに出力したい
  • Rのコードのように一気に出力したい
  • あとから分析内容を確認and修正できるようにしたい

Rなら全てできます!

Rでドキュメント生成

主に2つの方法で作れます:

  • Rnwファイルから作成
    • LaTeX記法をベースに書いていきます
    • マシンにLaTeX環境が必須
  • Rmdファイルから作成
    • Markdown記法をベースに書いていきます
    • htmlに慣れてるならこっちが楽

ドキュメントはどんなファイルに?

主に以下の3つの形式が選べます:

  • pdfファイル
    • Rnwファイル、Rmdファイルから作成可能
    • ただしLaTeX環境必須(pdf変換に利用するため
  • htmlファイル
    • Rmdファイルから作成
    • 動的なドキュメント(動きがあるの)には向いてる
  • docxファイル
    • Rmdファイルから作成
    • MSWordがなくても作れるしLibreOfficeで編集可能

まずは実際にやってみよう

R Markdownファイルを作成してみよう(デモ)

ドキュメントを作ってみよう

作ったものをKnitしてみよう(デモ)

Markdown記法って?

マークアップ言語の一つ

  • 主にHTMLに変換するために使われる
  • 文書構造を意識してればさくっと作れる
  • アウトラインを意識して作る人には作りやすい
  • htmlタグをそのまま受け付ける

気をつけるポイント

  • 色々なところで拡張されてて"方言"みたいなのがたくさんある
  • 細かいところの設定は難しい
  • CSS(スタイルシート)を扱うには厳しい

今回はR Markdownでの使い方を説明します

見出し要素

見出しは#を使います。

# タイトル扱い(h1)
## 大見出し扱い(h2)
### 中見出し扱い(h3)
#### 小見出し扱い(h4)

見出しの前後には改行を入れておいてください。

箇条書きについて

箇条書きは-などを使います。

- 箇条書き1
- 箇条書き1
  - 箇条書き2

1. 番号1
2. 番号2
  • 箇条書き1
  • 箇条書き1
    • 箇条書き2
  1. 番号1
  2. 番号2

その他の要素について

実は、RStudioにはMarkdown Quick Referenceがついてます!(デモ)

Rのコード埋め込み(Chunk)

# ```{r}
# (ここにRのコード記述)
# ```

例えば…

# ```{r}
# mean(1:10)
# var(1:10)
# ```

実行すると…

mean(1:10)
[1] 5.5
var(1:10)
[1] 9.167

チャンク名とチャンクオプション

チャンクオプションで色々設定できます。

# ```{r チャンク名, オプション名=値, ...}

チャンク名は、わかりやすいのをつけとくと後々便利です。
オプションは色々ありますが、主なものを紹介します

echoオプション

コードを表示するかどうかを指定できます(コードは評価します)

# ```{r エコーなし, echo=FALSE}
# mean(1:10)
# ```
[1] 5.5
# ```{r エコーあり, echo=TRUE}
# mean(1:10)
# ```
mean(1:10)
[1] 5.5

evalオプション

コードを評価するかどうかを指定(コードは表示します)

# ```{r 評価なし, eval=FALSE}
# mean(1:10)
# ```
mean(1:10)
# ```{r 評価あり, eval=TRUE}
# mean(1:10)
# ```
mean(1:10)
[1] 5.5

includeオプション

チャンクの出力をするかどうかを指定(コードは評価、前処理向け)

# ```{r 出力一切なし, include=FALSE}
# mean(1:10)
# ```
# ```{r 出力あり, include=TRUE}
# mean(1:10)
# ```
mean(1:10)
[1] 5.5

resultオプション

コードの評価結果の出力方法を指定

細かいところは省略しますが、表出力でうまく出てこない時などは以下のようにasisを指定してください。

# ```{r result='asis'}

その他のオプション

  • エラーや警告の処理
    • warningオプションやerrorオプションをFalseにすると非表示に。
  • プロットなどのサイズ
    • fig.widthやfig.heightオプションで画像ファイルのサイズ指定可能(インチ)
    • out.widthやout.heightオプションでレポート内でのサイズ指定可能(htmlならpx単位)

Tips

プロジェクトを毎回使おう

RStudoを使うなら、毎回ちゃんとプロジェクトを作って作業しましょう
特に窓機は文字コードの問題があるので、プロジェクトの設定でUTF-8にしてください

チャンク名はなるべくつけよう

RStudioでは、スクリプトウィンドウの左下に各チャンクに飛べるショートカットがついてます
ちゃんと名前をつけてるとこれで一発です

Markdownのエディタとして使いこなそう

RStudioはMarkdownエディタとしてもなかなか使い勝手がいいです
折りたたみ機能もあるのでアウトラインエディタとしても使えます(デモ)

Tips

表出力(kable())について

# ```{r kableのテストa, echo=False}
# kable(iris[1:3,])
# ```


| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species |
|------------:|-----------:|------------:|-----------:|:-------|
|          5.1|         3.5|          1.4|         0.2|setosa  |
|          4.9|         3.0|          1.4|         0.2|setosa  |
|          4.7|         3.2|          1.3|         0.2|setosa  |

Tips

表出力(kable())について

# ```{r kableのテストb, results='asis', echo=False}
# kable(iris[1:3,])
# ```
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa

さいごに

Rによるドキュメント生成について素晴らしい本が出ました
Useful R ドキュメント・プレゼンテーション生成

非常にオススメです! 今回の内容以上の細かい内容がたくさん記載してあります!

Enjoy!

Web: http://kz-md.net/

Twitter: @kazutan

kazutan