Enviar pesquisa
Carregar
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
•
69 gostaram
•
31,500 visualizações
Nagi Teramo
Seguir
第36回R勉強会@東京(#TokyoR)の資料
Leia menos
Leia mais
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 96
Baixar agora
Baixar para ler offline
Recomendados
位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
Takuya Akiba
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
Ormとの付き合い方
Ormとの付き合い方
豊明 尾古
これでBigQueryをドヤ顔で語れる!BigQueryの基本
これでBigQueryをドヤ顔で語れる!BigQueryの基本
Tomohiro Shinden
Recomendados
位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
Takuya Akiba
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
Ormとの付き合い方
Ormとの付き合い方
豊明 尾古
これでBigQueryをドヤ顔で語れる!BigQueryの基本
これでBigQueryをドヤ顔で語れる!BigQueryの基本
Tomohiro Shinden
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Takuya Akiba
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
Keiichiro Ono
グラフデータベース入門
グラフデータベース入門
Masaya Dake
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
xv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読む
mfumi
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
MagicOnion入門
MagicOnion入門
torisoup
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
C++による数値解析の並列化手法
C++による数値解析の並列化手法
dc1394
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
Takashi Kitano
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
技術を本にして売る、という仕事
技術を本にして売る、という仕事
Keiichiro Shikano
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
Rでreproducible research
Rでreproducible research
Shintaro Fukushima
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Mais conteúdo relacionado
Mais procurados
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Takuya Akiba
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
Keiichiro Ono
グラフデータベース入門
グラフデータベース入門
Masaya Dake
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
xv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読む
mfumi
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
Ctfのためのpython入門
Ctfのためのpython入門
shiracamus
MagicOnion入門
MagicOnion入門
torisoup
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
C++による数値解析の並列化手法
C++による数値解析の並列化手法
dc1394
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
Takashi Kitano
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
技術を本にして売る、という仕事
技術を本にして売る、という仕事
Keiichiro Shikano
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
Mais procurados
(20)
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Pythonによる黒魔術入門
Pythonによる黒魔術入門
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
グラフデータベース入門
グラフデータベース入門
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
xv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読む
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
Ctfのためのpython入門
Ctfのためのpython入門
MagicOnion入門
MagicOnion入門
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
C++による数値解析の並列化手法
C++による数値解析の並列化手法
メタプログラミングって何だろう
メタプログラミングって何だろう
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
{tidygraph}と{ggraph}による モダンなネットワーク分析(未公開ver)
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
技術を本にして売る、という仕事
技術を本にして売る、という仕事
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Semelhante a ~knitr+pandocではじめる~『R MarkdownでReproducible Research』
Rでreproducible research
Rでreproducible research
Shintaro Fukushima
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
Hiro Yoshioka
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Tomonobu_Hirano
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Nagi Teramo
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
Sakuteki02 yokkuns
Sakuteki02 yokkuns
Yohei Sato
普通のプログラミング言語R
普通のプログラミング言語R
Shuyo Nakatani
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
Kazuhiko Kato
続・SECDマシン
続・SECDマシン
t-sin
Tokyo r38
Tokyo r38
Takashi Minoda
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
monglee
Tokyo r50 beginner_2
Tokyo r50 beginner_2
Takashi Minoda
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
YoheiOkuyama
Semelhante a ~knitr+pandocではじめる~『R MarkdownでReproducible Research』
(20)
Rでreproducible research
Rでreproducible research
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Programming camp code reading
Programming camp code reading
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
Tokyo.R 白熱教室「これからのRcppの話をしよう」
Tokyo.R 白熱教室「これからのRcppの話をしよう」
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Sakuteki02 yokkuns
Sakuteki02 yokkuns
普通のプログラミング言語R
普通のプログラミング言語R
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
続・SECDマシン
続・SECDマシン
Tokyo r38
Tokyo r38
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
Tokyo r50 beginner_2
Tokyo r50 beginner_2
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)
Mais de Nagi Teramo
第86回R勉強会@東京 LT資料
第86回R勉強会@東京 LT資料
Nagi Teramo
Rでを作る
Rでを作る
Nagi Teramo
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
Nagi Teramo
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
Nagi Teramo
闇と向き合う
闇と向き合う
Nagi Teramo
機械の体を手に入れるのよ、鉄郎!!!
機械の体を手に入れるのよ、鉄郎!!!
Nagi Teramo
続わかりやすいパターン認識11章(11.1 - 11.4)
続わかりやすいパターン認識11章(11.1 - 11.4)
Nagi Teramo
5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnet
Nagi Teramo
Ultra Lightning Talk × 3
Ultra Lightning Talk × 3
Nagi Teramo
F#談話室(17)
F#談話室(17)
Nagi Teramo
RFinanceJはじめました
RFinanceJはじめました
Nagi Teramo
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
Nagi Teramo
お前の逐モン、GETだぜ!
お前の逐モン、GETだぜ!
Nagi Teramo
Trading volume mapping R in recent environment
Trading volume mapping R in recent environment
Nagi Teramo
とある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみた
Nagi Teramo
可視化周辺の進化がヤヴァイ~rChartsを中心として~
可視化周辺の進化がヤヴァイ~rChartsを中心として~
Nagi Teramo
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
Nagi Teramo
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
Nagi Teramo
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
Nagi Teramo
Rで学ぶ『構造型モデル de 倒産確率推定』
Rで学ぶ『構造型モデル de 倒産確率推定』
Nagi Teramo
Mais de Nagi Teramo
(20)
第86回R勉強会@東京 LT資料
第86回R勉強会@東京 LT資料
Rでを作る
Rでを作る
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる
闇と向き合う
闇と向き合う
機械の体を手に入れるのよ、鉄郎!!!
機械の体を手に入れるのよ、鉄郎!!!
続わかりやすいパターン認識11章(11.1 - 11.4)
続わかりやすいパターン認識11章(11.1 - 11.4)
5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnet
Ultra Lightning Talk × 3
Ultra Lightning Talk × 3
F#談話室(17)
F#談話室(17)
RFinanceJはじめました
RFinanceJはじめました
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
お前の逐モン、GETだぜ!
お前の逐モン、GETだぜ!
Trading volume mapping R in recent environment
Trading volume mapping R in recent environment
とある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみた
可視化周辺の進化がヤヴァイ~rChartsを中心として~
可視化周辺の進化がヤヴァイ~rChartsを中心として~
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
Rで学ぶ『構造型モデル de 倒産確率推定』
Rで学ぶ『構造型モデル de 倒産確率推定』
Último
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
yukisuga3
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
Último
(6)
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
~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
Baixar agora