Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Nagi Teramo
31,688 views
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
第36回R勉強会@東京(#TokyoR)の資料
Education
◦
Read more
69
Save
Share
Embed
Embed presentation
Download
Downloaded 175 times
1
/ 96
2
/ 96
3
/ 96
4
/ 96
5
/ 96
6
/ 96
7
/ 96
8
/ 96
9
/ 96
10
/ 96
11
/ 96
12
/ 96
13
/ 96
14
/ 96
15
/ 96
16
/ 96
17
/ 96
18
/ 96
19
/ 96
20
/ 96
21
/ 96
22
/ 96
23
/ 96
24
/ 96
25
/ 96
26
/ 96
27
/ 96
28
/ 96
29
/ 96
30
/ 96
31
/ 96
32
/ 96
33
/ 96
34
/ 96
35
/ 96
36
/ 96
37
/ 96
38
/ 96
39
/ 96
40
/ 96
41
/ 96
42
/ 96
43
/ 96
44
/ 96
45
/ 96
46
/ 96
47
/ 96
48
/ 96
49
/ 96
50
/ 96
51
/ 96
52
/ 96
53
/ 96
54
/ 96
55
/ 96
56
/ 96
57
/ 96
58
/ 96
59
/ 96
60
/ 96
61
/ 96
62
/ 96
63
/ 96
64
/ 96
65
/ 96
66
/ 96
67
/ 96
68
/ 96
69
/ 96
70
/ 96
71
/ 96
72
/ 96
73
/ 96
74
/ 96
75
/ 96
76
/ 96
77
/ 96
78
/ 96
79
/ 96
80
/ 96
81
/ 96
82
/ 96
83
/ 96
84
/ 96
85
/ 96
86
/ 96
87
/ 96
88
/ 96
89
/ 96
90
/ 96
91
/ 96
92
/ 96
93
/ 96
94
/ 96
95
/ 96
96
/ 96
More Related Content
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PDF
Pythonではじめる OpenAI Gymトレーニング
by
Takahiro Kubo
PDF
Openlink Virtuoso v01
by
Satoshi Kume
PDF
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
by
Megagon Labs
PDF
マインドフルネスと人工知能
by
Youichiro Miyake
PDF
ナレッジグラフとオントロジー
by
University of Tsukuba
PDF
子供の言語獲得と機械の言語獲得
by
Yuya Unno
PDF
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
Pythonではじめる OpenAI Gymトレーニング
by
Takahiro Kubo
Openlink Virtuoso v01
by
Satoshi Kume
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
by
Megagon Labs
マインドフルネスと人工知能
by
Youichiro Miyake
ナレッジグラフとオントロジー
by
University of Tsukuba
子供の言語獲得と機械の言語獲得
by
Yuya Unno
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
What's hot
PDF
SPARQLでオープンデータ活用!
by
uedayou
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
PDF
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PDF
幾何と機械学習: A Short Intro
by
Ichigaku Takigawa
PDF
はじめてのPRD
by
Takuya Oikawa
PPTX
PandasとSQLとの比較
by
iPride Co., Ltd.
PPTX
BERT分類ワークショップ.pptx
by
Kouta Nakayama
PPTX
論文の書き方入門 2017
by
Hironori Washizaki
PPTX
Transformerを雰囲気で理解する
by
AtsukiYamaguchi1
PDF
Protocol Buffers 入門
by
Yuichi Ito
PDF
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
PDF
情報抽出入門 〜非構造化データを構造化させる技術〜
by
Yuya Unno
PPTX
いまできるデータ分析を Power BI ではじめよう
by
Yugo Shimizu
PPT
lsh
by
Shunsuke Aihara
PDF
グラフニューラルネットワーク入門
by
ryosuke-kojima
PDF
マルチコアを用いた画像処理
by
Norishige Fukushima
PDF
Test Yourself - テストを書くと何がどう変わるか
by
Takuto Wada
PDF
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
by
株式会社MonotaRO Tech Team
PDF
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
PDF
マッチングサービスにおけるKPIの話
by
cyberagent
SPARQLでオープンデータ活用!
by
uedayou
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
幾何と機械学習: A Short Intro
by
Ichigaku Takigawa
はじめてのPRD
by
Takuya Oikawa
PandasとSQLとの比較
by
iPride Co., Ltd.
BERT分類ワークショップ.pptx
by
Kouta Nakayama
論文の書き方入門 2017
by
Hironori Washizaki
Transformerを雰囲気で理解する
by
AtsukiYamaguchi1
Protocol Buffers 入門
by
Yuichi Ito
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
情報抽出入門 〜非構造化データを構造化させる技術〜
by
Yuya Unno
いまできるデータ分析を Power BI ではじめよう
by
Yugo Shimizu
lsh
by
Shunsuke Aihara
グラフニューラルネットワーク入門
by
ryosuke-kojima
マルチコアを用いた画像処理
by
Norishige Fukushima
Test Yourself - テストを書くと何がどう変わるか
by
Takuto Wada
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
by
株式会社MonotaRO Tech Team
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
マッチングサービスにおけるKPIの話
by
cyberagent
Similar to ~knitr+pandocではじめる~『R MarkdownでReproducible Research』
PDF
Rでreproducible research
by
Shintaro Fukushima
PDF
R Markdownによるドキュメント生成と バージョン管理入門
by
nocchi_airport
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
by
Katsuhiro Morishita
PDF
C ai p3_jp_no3v1.0
by
Tsuda University Institute for Mathematics and Computer Science
PPTX
R超入門機械学習をはじめよう
by
幹雄 小川
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
by
Katsuhiro Morishita
PDF
Tokyo.R #19 発表資料 「Rで色々やってみました」
by
Masayuki Isobe
PDF
Rブートキャンプ
by
Kosuke Sato
PPTX
関東第1回r勉強会
by
Iida Keisuke
PDF
Tokyor23 doradora09
by
Nobuaki Oshiro
PDF
How to use animation packages in R(Japanese)
by
sleipnir002
PPT
R intro
by
yayamamo @ DBCLS Kashiwanoha
PDF
Rの高速化
by
弘毅 露崎
PDF
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
by
Takayuki Shimizukawa
PDF
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
by
Yuya Unno
PPTX
Tokyo r.28.lt.ss
by
Hiroki Matsui
PDF
10min r study_tokyor25
by
Nobuaki Oshiro
PDF
10min r study_tokyor25
by
Nobuaki Oshiro
PDF
MapReduceによる大規模データを利用した機械学習
by
Preferred Networks
PPTX
第1回関西ゼロからはじめるR勉強会
by
Iida Keisuke
Rでreproducible research
by
Shintaro Fukushima
R Markdownによるドキュメント生成と バージョン管理入門
by
nocchi_airport
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
by
Katsuhiro Morishita
C ai p3_jp_no3v1.0
by
Tsuda University Institute for Mathematics and Computer Science
R超入門機械学習をはじめよう
by
幹雄 小川
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
by
Katsuhiro Morishita
Tokyo.R #19 発表資料 「Rで色々やってみました」
by
Masayuki Isobe
Rブートキャンプ
by
Kosuke Sato
関東第1回r勉強会
by
Iida Keisuke
Tokyor23 doradora09
by
Nobuaki Oshiro
How to use animation packages in R(Japanese)
by
sleipnir002
R intro
by
yayamamo @ DBCLS Kashiwanoha
Rの高速化
by
弘毅 露崎
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
by
Takayuki Shimizukawa
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
by
Yuya Unno
Tokyo r.28.lt.ss
by
Hiroki Matsui
10min r study_tokyor25
by
Nobuaki Oshiro
10min r study_tokyor25
by
Nobuaki Oshiro
MapReduceによる大規模データを利用した機械学習
by
Preferred Networks
第1回関西ゼロからはじめるR勉強会
by
Iida Keisuke
More from Nagi Teramo
PDF
第86回R勉強会@東京 LT資料
by
Nagi Teramo
PDF
Rでを作る
by
Nagi Teramo
PPTX
Reproducebility 100倍 Dockerマン
by
Nagi Teramo
PDF
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
by
Nagi Teramo
PDF
闇と向き合う
by
Nagi Teramo
PDF
機械の体を手に入れるのよ、鉄郎!!!
by
Nagi Teramo
PDF
続わかりやすいパターン認識11章(11.1 - 11.4)
by
Nagi Teramo
PDF
5分でわかるかもしれないglmnet
by
Nagi Teramo
PDF
Ultra Lightning Talk × 3
by
Nagi Teramo
PDF
F#談話室(17)
by
Nagi Teramo
PDF
RFinanceJはじめました
by
Nagi Teramo
PDF
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
by
Nagi Teramo
PDF
お前の逐モン、GETだぜ!
by
Nagi Teramo
PDF
Trading volume mapping R in recent environment
by
Nagi Teramo
PDF
とある金融屋の統計技師が時系列解析してみた
by
Nagi Teramo
PDF
可視化周辺の進化がヤヴァイ~rChartsを中心として~
by
Nagi Teramo
PDF
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
by
Nagi Teramo
PDF
Tokyo.R 白熱教室「これからのRcppの話をしよう」
by
Nagi Teramo
PDF
レプリカ交換モンテカルロ法で乱数の生成
by
Nagi Teramo
PDF
Rで学ぶ逆変換(逆関数)法
by
Nagi Teramo
第86回R勉強会@東京 LT資料
by
Nagi Teramo
Rでを作る
by
Nagi Teramo
Reproducebility 100倍 Dockerマン
by
Nagi Teramo
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
by
Nagi Teramo
闇と向き合う
by
Nagi Teramo
機械の体を手に入れるのよ、鉄郎!!!
by
Nagi Teramo
続わかりやすいパターン認識11章(11.1 - 11.4)
by
Nagi Teramo
5分でわかるかもしれないglmnet
by
Nagi Teramo
Ultra Lightning Talk × 3
by
Nagi Teramo
F#談話室(17)
by
Nagi Teramo
RFinanceJはじめました
by
Nagi Teramo
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
by
Nagi Teramo
お前の逐モン、GETだぜ!
by
Nagi Teramo
Trading volume mapping R in recent environment
by
Nagi Teramo
とある金融屋の統計技師が時系列解析してみた
by
Nagi Teramo
可視化周辺の進化がヤヴァイ~rChartsを中心として~
by
Nagi Teramo
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
by
Nagi Teramo
Tokyo.R 白熱教室「これからのRcppの話をしよう」
by
Nagi Teramo
レプリカ交換モンテカルロ法で乱数の生成
by
Nagi Teramo
Rで学ぶ逆変換(逆関数)法
by
Nagi Teramo
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
1.
第36回 勉強会@東京(#TokyoR) ~knitr+pandocではじめる~ 『R MarkdownでReproducible Research』 @teramonagi
2.
もくじ • 自己紹介&モチベーション • 準備 •
R MarkdownでReproducible Research –基礎編 –応用編 • まとめ • 参考(書籍|スライド|サイト) 2
3.
自己紹介 • ID:@teramonagi • 興味:/R/C++/F#/ 微分幾何/モンテ カルロ法/物理学 /金YOU/ •
直近:ドキュメン テーション辛い 3
4.
このお話のモチベーション • 計算/分析結果をまとめたWord/TeX を書くのがめんどい –TeXのタグがしんどい。Wordの“見 出し”が俺の言うこと聞かない… • そもそも結果に再現性がない –あのcsvとあのDBのデータを持っ て来て云々…あれ?結果が違う? 4
5.
これから1,000枚の図 を手で報告書に貼りつ けなきゃならんぜ!!! 終電コース!!! 5
6.
そういうの、もうしんどい この状況、 どうにかなら ないの? 6
7.
でも、大丈夫 そう、 Markdownならね 7
8.
Markdownを使えば… • Rのコードと、資料本文を管理・作成 (文芸的プログラミングの実践) • コードと本文から成るドキュメントを 再実行(コンパイル)すれば結果の 再現性が担保される (Reproducible
Research) ※“文芸的プログラミング”と“Reproducible Research”の正確な定義がよくわからん… 8
9.
準備 9
10.
本スライドの話に必要な道具 • Rstudio(knitrパッケージ) • pandoc •
TeX環境一式 • (Windows) • (Microsoft Office環境) 10
11.
RStudio • Rの統合開発環境(IDE) http://www.rstudio.com/ide/download/desktop 11
12.
knitrパッケージ • Rのコンソールで、以下のコマンドを 実行 > install.packages("knitr") 12
13.
Pandoc • ドキュメント・コンバータ http://johnmacfarlane.net/pandoc/ 13 ※PDF/MS Wordを作るのに使用。LINK先にあるDLページからmsiファイルでインストール
14.
TeX • TeXインストーラ(PDF作成用) http://www.math.sci.hokudai.ac.jp/~abenori/soft/abtexinst.html ※TeXをPDFにする際に使用。LINK下部の【ダウンロード】から最新版をインストール 14
15.
R MarkdownでReproducible Research 基礎編 15
16.
R Markdownを書くために • Rstudio上でknitrパッケージを使用 •
knitr≒文芸的プログラミングエンジン • R(コード)と「LaTeX, HTML, Markdown, reStructuredText」等の本文を組み合 わせ、動的にレポートを生成可能 • ”チャンク(chunk)”というコード(塊?片?) とレポート”本文”をあわせて書く ※実はR以外にもC++・python・awkなんかもいける 16
17.
大まかな流れ ( .html 何 .Rmd ら (R Markdown) .docx か の 処 knitr .pdf .Rhtml 理 (R HTML) パッケージ 挟 .md む .Rnw こ .tex (TeX+R) と 屡 等 ※reStructuredTextなんかもイケる ※正確に言うと、knitrパッケージは【R
Markdown(.Rmd)】→【Markdown(.md)】を担当 17 ) R+本文(HTML, MarkDown等)
18.
.Rnwファイルの処理法 2つの処理法 がある ※Rstudioの設定画面(【Tools】→【Options】) 18
19.
knitr/Sweaveの違い Rのパッケージ knitr Sweave 処理対象 .Rhtml .Rmd .Rnw ※knitrとSweaveでは.Rnwを処理する際に使えるchunkのオプションがちょいと違う 19
20.
.Rnw/.Rmdの違い • TeXベース(.Rnw)かMarkdownベー ス(.Rmd)かが違う • できる事は.Rnwの方が多い(はず) .Rnw .Rmd ※.RnwのnwはNowebの意味でそういうLiterate
Programmingツールに由来するらしい 20
21.
本題へ 21
22.
まずは新規ファイルの作成 クリック ※Rstudioを立ち上げて【File】 22
23.
デフォルトでなんか入ってる 1:ファイルを保存(UTF-8推奨) 2:を押す ※ファイルに変更がないと保存できないかも 23
24.
結果(HTML)がプレビューされる 24
25.
以下、こ の.Rmdファ イルに、コー ドと文章を書 いきます 25
26.
この後(少なくとも俺は)こうしてる • 基本的に 1. (適当に)文章書いて 2.
間にRのコードを挟む な感じで書いていく • 時々、[Knit HTML]押してチェック ←行ったり来たり→ .Rmd (R Markdown) knitr ※もっといいやり方あったら教えてください .html 26
27.
まずは基本的な書き方 • 本文の間にチャンクと呼ばれる ```{r label,
option1, …., optionN} ----ここにRのコード----``` を書き、Rのコードを埋め込んでいく (label・optionはIDと処理のオプション) • .Rhtmlでも.Rnwでも基本こんな感じ (Chunkの開始・終了タグがちょいと違うだけ) 27
28.
まずは基本的な書き方 • 以下の内容を.Rmdファイルに追記 やぁ、みんなこんにちは! ぼくのRのversionは ```{r my_r_version,
warning=TRUE} R.version.string ``` Rのコード ダヨ!!! Chunk Chunkのlabel. ID的なもん Chunkのオプション的なもん 28
29.
まずは基本的な書き方 • [Knit HTML]ボタン押すと以下のよう な、出力が得られる ※宗教上の理由で古いRを使っております 29
30.
アドバイス • Chunkのlabelは同/別のファイルか ら参照する際に使用されるんで、な くてもOKだが、必要ならちゃんとつ けとけ。chunkの共有・参照に便利 • Chunkのオプションはたくさんあるか ら、使いそうなもんだけ覚えておけ (後述) 30
31.
インラインChunk • 以下の内容を.Rmdファイルに追記 `r XXX`でインライン展 開されるchunkになる carsデータに関する回帰分析だーっ! ```{r
lm_result} x <- lm(dist~speed, data=cars) ``` この結果、回帰係数の切片は `r coef(x)["speed"]`となった。 31
32.
インラインChunk • 文章中に結果が埋め込まれる • 結果を適当な変数に入れておけば、 文章だけ先に用意することも可能 32
33.
数式の追加 • 以下の内容を.Rmdファイルに追記 数式も表示できるヨ!! $でインラインな数式 $f(x) =
ax^2 + bx + c$、 $$で1行まるごと数式 $$f(x) = ax^2 + bx + c$$ TeX記法 を用いる 33
34.
数式の追加 • 実行結果(HTML) • mathjaxを用いて描画されている 34
35.
表の追加 • resultsオプションに、”そのまま出力”を 意味する’asis’を指定 • knitr内のkable関数を使用(xtableも可) •
format=“markdown”でpandoc用 markdownテーブルへ出力可 ```{r table1, results='asis'} x <- lm(dist ~ speed, data=cars) kable(summary(x)$coef, format="html",digits=2) ``` ※その他、panderパッケージなるものを使う手もある 35
36.
表の追加 • 表の”見てくれ”を変えたい場合は、 HTML表示の際に使われるcssファイ ルを変える必要あり(※) ※参照:http://www.slideshare.net/wdkz/rstudio-13866958 36
37.
図の追加 • 単純にPLOT関数を書けばOK • fig.(width|height)には出力(Not
張付) 画像サイズをインチ単位で指定 • fig.capオプションに文字列を指定する と図のキャプションも入る(Word等時) ```{r plot_cars, fig.width=5, fig.height=4} plot(cars) ``` 37
38.
図の追加 38
39.
図の追加 • ggplot2なんかもOK ```{r plot_iris,
fig.width=5, fig.height=4} library(ggplot2) qplot(Sepal.Length, Sepal.Width, data =iris, colour=Species) ``` 39
40.
図の追加 40
41.
グローバルにオプション指定 • 毎回chunkにオプション書くのめんどい • opts_chunkで全体に対して一括でオプ ションを指定できる ```{r
global_option, eval=FALSE} #opts_chunk$setで指定したものは、 #全体に設定されるので以降指定しなくてOK opts_chunk$set(fig.width=6, fig.height=6) ``` 41
42.
その他のオプションについて R markdown(knitr)パッケージのchunk optionまとめ http://d.hatena.ne.jp/teramonagi/20130615/1371303616 42
43.
基礎編のまとめ • とりあえずHTMLで –Rの基本的な実行結果 –図・表・数式 が出力できるようになった! • レポートをHTMLで作成していいなら これで大体OK •
オプションは必要に応じてググれ 43
44.
本文を書く際に使える Markdownのクイックリファレンス Markdownの クイックリファレン スが開くクリック ※見出し、フォント等の設定法が書いてある。最新版のRStudioだとちょい見てくれ違う 44
45.
R MarkdownでReproducible Research 応用編 45
46.
応用編 • もうちょっと”凝った”ものを作 るためのテクニック的なもの • 俺が悩んで酷い目にあったも のへの対処法 …を紹介 46
47.
Chunkオプションの条件化 • ChunkオプションにはRの変数や関 数の結果を代入することが可能 • 例:xが3より大きい場合のみchunk を評価 ```{r
conditionalchunk_eval, eval=(x>3)} print("x は3より大きい") ``` ※ 図の番号をつけるのとかにも使える ※参照:https://github.com/yihui/knitr-examples/blob/master/070-caption-num.Rmd 47
48.
スクリプトの共有 • read_chunk関数により、Rで書いた他の ファイルを取りこむことが可能 • 以下の内容のファイルが”share/shared.R” として保存してあると仮定 ##
@knitr plus10r plus10 <- function(x){ x+10 } plus10(3) ## @knitr subset_iris subset(iris, Sepal.Length>7.6) 48
49.
スクリプトの共有 .Rmdの例 その出力結果 ```{r read_shared_r} read_chunk("share/shared_r.R") ``` ```{r plus10r} ``` shared_r.R内の関数が ##
@knitr plus10r という書式で指定されたラベルで実行できる! 49
50.
.Rmdファイルの分割 • 以下のような内容の.Rmdを作成 (share/shared_rmd.Rmdとした) ```{r child_rmd} print("これは別ファイルに記述されたR
Markdownです") ``` • 別の.Rmdでchildオプションで指定 ```{r child1, child="share/shared_rmd.Rmd"} ``` 50
51.
.Rmdファイルの分割 • .Rmdが展開(本文)され、chunkも実 行される • 複数人で書く、あるいは章ごとに分 けるなどの際に便利 51
52.
他の言語、突っ込む • engineオプションを指定することで、 他の言語(python, ruby,
sed, awk, haskell, SAS, perl)をchunkとして突っ 込める • 更に、Rcppを指定するとRcppのコー ドを書く事も可能 52
53.
他の言語、突っ込む(Rcpp) • フィボナッチ数列計算関数作成 ```{r engine_rcpp,
engine='Rcpp'} #include<Rcpp.h> // [[Rcpp::export]] int fibCpp(const int x){ if(x==0 || x==1){return(x);} return(fibCpp(x-1) + fibCpp(x-2)); } ``` 53
54.
他の言語、突っ込む(Rcpp) • 作成した関数を.Rmd内部で使用 ```{r r
use_rcpp} #Rcppで作成した関数を使用 fibCpp(10) ``` 54
55.
他の言語、突っ込む(python) • フィボナッチ数列計算関数作成&実行 ```{r engine='python'} def
fibPy(n): if n == 0 or n == 1 : return n else: return fibPy(n-1) + fibPy(n-2) print fibPy(10) ``` 55
56.
他の言語、突っ込む(python) • HTMLとして出力すると、ちゃんとソー ス+実行された結果が返ってくる 56
57.
Chunkのエイリアス • Chunkオプションには、略記のため の”別名”を付けることも可能 ```{r} set_alias(w =
"fig.width", h = "fig.height") ``` ```{r w=7, h=6} plot(cars) ``` ※正確にはchunkオプション以外にPackageオプションがあり、aliasはその1つ 57
58.
コードをAppendixに載せる Aという手法を用いると、以下のような結果が算出される。 ```{r AppA, echo=FALSE} 1+1 ``` 一方、手法Bを用いると、以下のような結果となった。 ```{r
AppB, echo=FALSE} 2+3 ``` ~Appendix~ 手法Aのコード ```{r AppA, eval=FALSE} ``` 手法Bのコード ```{r ref.label=c('AppB'), eval=FALSE} ``` ※ちなみにall_labels関数を用いると全chunkのlabelが引ける 58
59.
コードをAppendixに載せる 59
60.
テンプレートからの作成 • Rのソースコードを雛型として、一気に 定型レポート作成する関数もあり –spin: .R
---> .md –stitch: .R ---> .md/.html/.pdf(*1) • spinは変換のみ • stitchは簡単なレポートのテンプレート まで作ってくれる(*2) ※1: 日本語環境だとpdf生成は、相当頑張って設定しないとキツいとおもう… ※2: デフォルトのテンプレートだとsessioninfo, ファイルの生成時間を自動で付けてくれたり する。テンプレートは指定可能。 60
61.
テンプレートからの作成 • spin関数、RStudioから即使えます こいつをポチる 61
62.
テンプレートからの作成 • spin関数による変換結果 62
63.
さて、 63
64.
日本を支える ビジネスマンの 皆さん 64
65.
鬼門です 65
66.
鬼門 すぐに Word で報告書を 作成して 66
67.
手で図・表の結果をWord貼り付ける… 枚数によっては ※VBA使ってもしんどい 67
68.
Word/PDFで出力したい • Pandocを使って、knitrの出力 (Markdown)をWord/PDFへ変換する 方向で • knitrから直接変換できるものの、日 本語が入ると正直キツい •
これは試行錯誤の末の一案なので、 だれかもっといいやり方あったら教 えて… 68
69.
ドキュメント変換のルート markdown .Rmd 基礎編のルート .md pandoc pandoc knitr .tex .html .docx TeX (LuaLaTeX) .pdf 69
70.
ドキュメント変換に向けて • HTML以外にするためには、ある程 度knitrが中でどんな動きをしている のかを知っておくのが得策 • というわけで、[Knit
HTML]ボタンを 押した場合の挙動をちょいと紹介 70
71.
[Knit HTML]ポチった時の動作 .Rmd (R Markdown) knit関数 (knitrパッケージ) .md (Markdown) markdownToHTML関数 (markwodnパッケージ) .html (HTML) ※実際はRstudio内部にあるMarkdownからHTMLにする内部関数が使われてるらしい 71
72.
[Knit HTML]ポチった時の動作 • 模倣するには、以下のように書く library(knitr) library(markdown) output
<- knit(“TokyoR36_Basic.rmd”,encoding=“UTF-8”) #「invalid multibyte string at」 #というエラーが出るので解消するためにロケール変えてる。 #Windows 7だけかも? #ロケール変えなくていいなら #knitr::knit2html関数もほぼ同じ挙動 Sys.setlocale(locale=“C”) markdownToHTML(output, output=“ TokyoR36_Basic.html") 72
73.
ドキュメント変換の指針 • なんで、knit関数を使って、 Markdown(.md)を作成した後、これ をmarkdownパッケージ経由でHTML にはせずに、Word/PDFに“変換”す る方法を取る • その”変換”にはpandocを使用 73
74.
ドキュメント変換の際の注意 • HTMLでチェックしつつ、Markdownに 持って行こうと思う場合、表の形式を HTML⇔Markdownで切り替える必要 がある • とりあえず、以下のようなコード を、.Rmdの頭に書くようにしておいた ```{r
table_format} table.format <- ifelse(exists(“table.format”), table.format, “html”) ``` ※参考程度に後述するhookってのを使うのもあり 74
75.
Wordへの変換 • こんな感じでいけます • pandocはRのpandoc関数で召喚 •
tableがmarkdownになるように設定 ```{r convert_to_docx, eval=FALSE} library(knitr) env <- new.env() assign(“table.format”, “markdown”, env) output <- knit(“TokyoR36_Basic.Rmd”, envir=env, encoding=“UTF-8”) pandoc(output, format=‘docx’) ``` ※pandocのオプションとして--reference-docxをつけると.docxの書式等を指定したテンプレートが使える ※ @sky_y氏作の日本語訳有!多謝!(http://sky-y.github.io/site-pandoc-jp/users-guide/) 75
76.
Wordへの変換結果 76
77.
からの、 罠 • 僕のWord数式が文字化ける ※Word 2007だけかも?手元に環境がないのでよくわからない 77
78.
数式の文字化け修正 • Wordファイルの拡張子を.docx→zip へと変更 • zipを解凍し、word/document.xmlを 適当なテキストエディタで開く 78
79.
数式の文字化け修正 ファイル内の <m:t> を <w:rFonts w:hAnsi="Cambria Math" w:ascii="Cambria
Math"/><m:t> に置換&保存する 79
80.
数式の文字化け修正 • 解凍したファイル4つを選択し、また再圧縮 • 拡張子を.docxに戻す 80
81.
数式の文字化け修正 • 拡張子をdocxに戻すとちゃんと数式 が表示される!!! • オイラやったよ!!! 81
82.
やったね! 図・表の1,000枚程度、 ドンと来い 82
83.
PDFで出力したい • [.md]→[.tex]→[.pdf]とTeX経由でPDFへ • 以下のような”おまじない”でPDFになります •
コマンドプロンプトで「pandoc –D latex」と 打って出る結果が、デフォルトのTeXのテン プレートになるので、スタイル変更したい場 合は、適当に改変する必要有(*) library(knitr) env <- new.env() assign(“table.format”, “markdown”, env) output <- knit(“TokyoR36_Basic.Rmd”, envir=env, encoding=“UTF-8”) system(sprintf(“pandoc -s %s -V documentclass=ltjltxdoc -o hoge.tex”, output)) system(“lualatex -interaction=nonstopmode hoge.tex”) ※おとなしくユーザガイド見るのが一番いい(http://johnmacfarlane.net/pandoc/README.html ※ @sky_y氏作の日本語訳有!多謝!(http://sky-y.github.io/site-pandoc-jp/users-guide/) 83
84.
PDFで出力したい ごちゃごちゃ面 倒だし、Wordを PDFで名前付け て保存でいいや ※あくまで私見です 84
85.
この資料で全く解説してない内容 • hookというknitr内で行われるR Markdown処理の拡張方法がある –chunkオプションを拡張する事がで きる –Chunkの処理(前後)に好きな処理 を挟むことが出来る • “knit_hooks”で調べると良い ※正確にはchunk
hooksとoutput hooksがある ※render_XXX(関数を調べるとよい 85
86.
後は頑張って作者のページ嫁 http://yihui.name/knitr/ 86
87.
変換周りはPandocのマニュアル嫁 http://johnmacfarlane.net/pandoc/README.html 87
88.
Pandocの日本語ユーザーズマニュアル有 @sky_y氏多謝!!!( http://sky-y.github.io/site-pandoc-jp/users-guide/) 88
89.
Enjoy!!! 89
90.
参考書籍 Dynamic Documents with
R and knitr どちらかとい うとLaTeXとい うか.Rnwの話 題が多い 90
91.
参考スライド そろそろRStudioの話でもしてみようと思う http://www.slideshare.net/wdkz/rstudio-13866958 91
92.
参考スライド RStudio事始め http://www.slideshare.net/TakashiYamane1/rstudio92
93.
参考スライド RでReproducible Research http://www.slideshare.net/sfchaos/rreproducible-research-13569000 93
94.
参考サイト http://kbroman.github.io/knitr_knutshell/ 94
95.
参考サイト https://github.com/yihui/knitr-examples 95
96.
参考サイト http://d.hatena.ne.jp/a_bicky/20140221/1392941055 96
Download