SlideShare a Scribd company logo
1 of 26
Download to read offline
R markdownで図表番号の自動付与と参照
@t_macya
第64回R勉強会@東京(#TokyoR)
2017年8月26日
1 / 26
1 はじめに
2 R markdown is 何
3 表番号の自動付与と参照
4 図番号の自動付与と参照
5 まとめ
2 / 26
はじめに
3 / 26
自己紹介
Twitter: @t_macya
所属:高松大学
専門:教育心理学
web: http://mtokuoka.net
数式を多用しないがなんとなくbeamerやtexが好きなにわかてふにしゃん
統計とかプログラミングにちょっとだけ知識のある一般人
勝手に近況報告
つい最近やっとR markdownからbeamerが作れるようになりました
ベイズ統計モデリング: R, JAGS, Stanによるチュートリアル (犬4匹本)の中の1
章を訳しました。
本の厚さと大きさがネタになりますよ!
4 / 26
著書
5 / 26
モチベーション
ぎょーむにてちょっとしたデータ解析をすることがまれにある
全てのきょーむが楽しいとは限らない
書類作成をRでやればちょっとは楽しめるかもしれない
Rmdからhtmlもいいけど,印刷することを考えるとpdfがいいなー
tex環境があればR markdownからpdf作成ができるらしい
論文もRmdから書けると分析から執筆が進むかも
PDF出力だとなんとなく図表の相互参照したい
6 / 26
R markdown is 何
7 / 26
R markdown is 何?1
Rの解析結果や文をhtmlやPDFなど様々なフォーマットで出力してくれる
詳しくはドキュメント・プレゼンテーション生成やKazutan.Rを参照
8 / 26
R markdown is 何?2
コード部分にはRコード以外にもStanやpythonのコードもいける
9 / 26
R markdown is 何?3
こんな感じに出力してくれる。
10 / 26
表番号の自動付与と参照
11 / 26
紹介する関数とパッケージおよび相互参照の仕方
本LTでは,PDF,特にbeamerで利用可能なものを紹介します。
html形式ならDT packageやformattable packageなどがよさそう
関数の引数でラベル名を指定するタイプ
pandoc.table関数 (pander package): ref{ラベル名}
xtable関数 (xtable package): ref{ラベル名}
チャンク名を指定するタイプ
kable関数 (knitr package): ref(tab:チャンク名)
bookdown package: @ref(tab:チャンク名)
bookdownでbeamerを作れるのか確認していないため今回はなし
12 / 26
準備
サンプルデータにはmtcarデータを使用
ぎょーむの報告書では日本語の方が喜ばれそうなので変数名を日本語にしておく
燃費(mile/gallon),排気量,重さの3変数を使用
dat <- mtcars %>%
dplyr::select (mpg, disp, wt) %>%
dplyr::rename (燃費 = mpg, 排気量 = disp, 重さ = wt) %>%
round (digits = 2) %>%
head ()
13 / 26
これのきれいな形を目指す
dat
## 燃費 排気量 重さ
## Mazda RX4 21.0 160 2.62
## Mazda RX4 Wag 21.0 160 2.88
## Datsun 710 22.8 108 2.32
## Hornet 4 Drive 21.4 258 3.21
## Hornet Sportabout 18.7 360 3.44
## Valiant 18.1 225 3.46
14 / 26
pandoc.table関数: コード
captionの“ほげ label{ }”でラベルを付与しref{ }で参照可能
チャンク名の参照(ref{pandoc.talbe})はできなさそう(Table ??となる)
# ```{r pandoc.table, eval = TRUE, results=”asis”}
colnames(dat) <- iconv (colnames (dat), from = ”UTF-8”)
# dplyrを使うと文字コードをUTF-8に変換しないとエラーを吐き出す。
# ありがとうございますr-wakarang, @yutannihilationさん
pandoc.table(dat, ”ほげ label{pander}”)
15 / 26
pandoc.table関数: 出力
pandoc.table(dat, ”ほげ label{pander}”)
Table 1: ほげ
燃費 排気量 重さ
Mazda RX4 21 160 2.62
Mazda RX4 Wag 21 160 2.88
Datsun 710 22.8 108 2.32
Hornet 4 Drive 21.4 258 3.21
Hornet Sportabout 18.7 360 3.44
Valiant 18.1 225 3.46
Table ref{pander}とすると,Table 1となって相互参照できた!
16 / 26
xtable関数: コード
xtable関数の引数でラベル名を付与し(label = ” “),ref{ }で参照可能
チャンク名を参照しようとしても(ref{tab:xtable}),Table ??となってしま
い参照できさなそう。
# ```{r xtable, results = 'asis'}
print (xtable (dat, caption = ”ほげほげ”, label = ”x”),
type = ”latex”,
comment = FALSE,
caption.placement = ”top”)
17 / 26
xtable関数: 出力
# ```{r xtable, results = 'asis'}
print (xtable (dat, caption = ”ほげほげ”, label = ”x”), type = ”latex”,
comment = FALSE, caption.placement = ”top”)
Table 2: ほげほげ
燃費 排気量 重さ
Mazda RX4 21.00 160.00 2.62
Mazda RX4 Wag 21.00 160.00 2.88
Datsun 710 22.80 108.00 2.32
Hornet 4 Drive 21.40 258.00 3.21
Hornet Sportabout 18.70 360.00 3.44
Valiant 18.10 225.00 3.46
Table ref{x}とすると,Table 2となって相互参照できた!
18 / 26
kable関数: コードと出力
ref{tab: }内にチャンク名を指定すれば参照可能
# ```{r kable, results = 'asis'}
knitr::kable(dat, format = ”latex”, caption = ”ほげほげほげ”, booktabs = TRU
Table 3: ほげほげほげ
燃費 排気量 重さ
Mazda RX4 21.0 160 2.62
Mazda RX4 Wag 21.0 160 2.88
Datsun 710 22.8 108 2.32
Hornet 4 Drive 21.4 258 3.21
Hornet Sportabout 18.7 360 3.44
Valiant 18.1 225 3.46
Table ref{tab:kable}とすると,Table 3となって相互参照できた! 19 / 26
なんでパッケージによってcaptionと表の位置が違うのか
pandoc.table ()
3つの中では最もコードが複雑な構造になっている
{longtable}の中で{minitable}を使いコードが長い
xtable ()
{table}の中で{tabular}で表を作成
hlineで罫線
arrayrulewidthが0.4ptがデフォルトらしい
kable ()
{table}から始まり,begin{tabular}で表を作成
toprule, midrule, bottomruleで罫線を引く
デフォルトではtopとbottomはheavyrulewidthを0.08em
さらにbooktab = TRUEとしているため,いろいろと制御されているっぽい
20 / 26
図番号の自動付与と参照
21 / 26
図番号の自動付与と参照: コード
チャンクオプションのfig.capで加える図のラベルを付与できる。
ラベルの付与にはバックスラッシュを2つ入れる必要があるので注意。
Figure 1(ref{fig01})はmtcarデータの中の燃費と重さの関係を可視化したも
の。
# ```{r fig, dev='png', fig.cap = ”ふが. label{fig01}”}
g <- ggplot (dat, aes (x = 重さ, y = 排気量))
g + geom_point()
22 / 26
図番号の自動付与と参照: 出力
Figure 1: ふが.
23 / 26
まとめ
24 / 26
まとめ
表はrefで引数にするものがラベル名やチャンク名で異なるので注意
パッケージによってもキャプションの位置が微妙に変わる
図はチャンクオプションのfig.capでラベル指定
yamlでkeep_tex: trueにしてtexファイルを参照するとよいかも
25 / 26
参考webサイトなど
rmarkdownパッケージで楽々ドキュメント生成
R markdown from R studio
Miler S. V. (2015). Moving from Beamer to R Markdown
topruleとhlineの違い
r-wakarang
@yutannihilationさん, @hoxo_wさん, @keikuさん, @kazutanさんありがとうござ
います。
26 / 26

More Related Content

What's hot

forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析Satoshi Kato
 
Rで学ぶ離散選択モデル
Rで学ぶ離散選択モデルRで学ぶ離散選択モデル
Rで学ぶ離散選択モデル宏喜 佐野
 
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~啓 杉本
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介T. Suwa
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to ObjectsYoshifumi Kawai
 
馬に蹴られるモデリング
馬に蹴られるモデリング馬に蹴られるモデリング
馬に蹴られるモデリングShushi Namba
 
アジャイルな地図づくり User Story Mapping for Agile Team
アジャイルな地図づくり User Story Mapping for Agile Teamアジャイルな地図づくり User Story Mapping for Agile Team
アジャイルな地図づくり User Story Mapping for Agile TeamTakeshi Kakeda
 
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]DeNA
 
Road to ggplot2再入門
Road to ggplot2再入門Road to ggplot2再入門
Road to ggplot2再入門nocchi_airport
 
10年目の『エブリスタ』を支える技術
10年目の『エブリスタ』を支える技術10年目の『エブリスタ』を支える技術
10年目の『エブリスタ』を支える技術DeNA
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しいTakafumi ONAKA
 
Rを用いたLTV(Life Time Value)の推定
Rを用いたLTV(Life Time Value)の推定Rを用いたLTV(Life Time Value)の推定
Rを用いたLTV(Life Time Value)の推定宏喜 佐野
 
テキストマイニング講義資料
テキストマイニング講義資料テキストマイニング講義資料
テキストマイニング講義資料Kosuke Sato
 
投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-
投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-
投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-Takanobu Mizuta
 
分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門Koichiro Gibo
 
ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2nocchi_airport
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
Confidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみたConfidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみたtkng
 

What's hot (20)

forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析forestFloorパッケージを使ったrandomForestの感度分析
forestFloorパッケージを使ったrandomForestの感度分析
 
Rで学ぶ離散選択モデル
Rで学ぶ離散選択モデルRで学ぶ離散選択モデル
Rで学ぶ離散選択モデル
 
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
馬に蹴られるモデリング
馬に蹴られるモデリング馬に蹴られるモデリング
馬に蹴られるモデリング
 
アジャイルな地図づくり User Story Mapping for Agile Team
アジャイルな地図づくり User Story Mapping for Agile Teamアジャイルな地図づくり User Story Mapping for Agile Team
アジャイルな地図づくり User Story Mapping for Agile Team
 
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
タクシーxAIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて [SRE NEXT 2020]
 
Road to ggplot2再入門
Road to ggplot2再入門Road to ggplot2再入門
Road to ggplot2再入門
 
llvm入門
llvm入門llvm入門
llvm入門
 
10年目の『エブリスタ』を支える技術
10年目の『エブリスタ』を支える技術10年目の『エブリスタ』を支える技術
10年目の『エブリスタ』を支える技術
 
Webアプリケーションは難しい
Webアプリケーションは難しいWebアプリケーションは難しい
Webアプリケーションは難しい
 
Rを用いたLTV(Life Time Value)の推定
Rを用いたLTV(Life Time Value)の推定Rを用いたLTV(Life Time Value)の推定
Rを用いたLTV(Life Time Value)の推定
 
テキストマイニング講義資料
テキストマイニング講義資料テキストマイニング講義資料
テキストマイニング講義資料
 
投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-
投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-
投資戦略の最適化の不安定性による金融市場の不安定性 -人工市場を用いた分析-
 
分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門分割時系列解析(ITS)の入門
分割時系列解析(ITS)の入門
 
ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
Confidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみたConfidence Weightedで ランク学習を実装してみた
Confidence Weightedで ランク学習を実装してみた
 

More from Masaru Tokuoka

SEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルSEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルMasaru Tokuoka
 
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05 RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05 Masaru Tokuoka
 
ポワソン分布の分布感をつかむ
ポワソン分布の分布感をつかむポワソン分布の分布感をつかむ
ポワソン分布の分布感をつかむMasaru Tokuoka
 
inferences with gaussians: 記法によるrstanの推定結果の違い
inferences with gaussians: 記法によるrstanの推定結果の違いinferences with gaussians: 記法によるrstanの推定結果の違い
inferences with gaussians: 記法によるrstanの推定結果の違いMasaru Tokuoka
 
rstanで情報仮説によるモデル評価してみる@Hjiyama.R
rstanで情報仮説によるモデル評価してみる@Hjiyama.Rrstanで情報仮説によるモデル評価してみる@Hjiyama.R
rstanで情報仮説によるモデル評価してみる@Hjiyama.RMasaru Tokuoka
 
混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をする混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をするMasaru Tokuoka
 
データ入力が終わってから分析前にすること
データ入力が終わってから分析前にすることデータ入力が終わってから分析前にすること
データ入力が終わってから分析前にすることMasaru Tokuoka
 
MCMCで研究報告
MCMCで研究報告MCMCで研究報告
MCMCで研究報告Masaru Tokuoka
 
ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法Masaru Tokuoka
 
第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)Masaru Tokuoka
 
第1回DARM勉強会のANOVA補足(repeated measures designs)
第1回DARM勉強会のANOVA補足(repeated measures designs)第1回DARM勉強会のANOVA補足(repeated measures designs)
第1回DARM勉強会のANOVA補足(repeated measures designs)Masaru Tokuoka
 
DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)Masaru Tokuoka
 
第2回DARM勉強会.preacherによるmoderatorの検討
第2回DARM勉強会.preacherによるmoderatorの検討第2回DARM勉強会.preacherによるmoderatorの検討
第2回DARM勉強会.preacherによるmoderatorの検討Masaru Tokuoka
 

More from Masaru Tokuoka (14)

SEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデルSEMを用いた縦断データの解析 潜在曲線モデル
SEMを用いた縦断データの解析 潜在曲線モデル
 
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05 RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
RでMplusがもっと便利にーmplusAutomationパッケージー #Hiroshimar05
 
ポワソン分布の分布感をつかむ
ポワソン分布の分布感をつかむポワソン分布の分布感をつかむ
ポワソン分布の分布感をつかむ
 
inferences with gaussians: 記法によるrstanの推定結果の違い
inferences with gaussians: 記法によるrstanの推定結果の違いinferences with gaussians: 記法によるrstanの推定結果の違い
inferences with gaussians: 記法によるrstanの推定結果の違い
 
rstanで情報仮説によるモデル評価してみる@Hjiyama.R
rstanで情報仮説によるモデル評価してみる@Hjiyama.Rrstanで情報仮説によるモデル評価してみる@Hjiyama.R
rstanで情報仮説によるモデル評価してみる@Hjiyama.R
 
混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をする混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をする
 
データ入力が終わってから分析前にすること
データ入力が終わってから分析前にすることデータ入力が終わってから分析前にすること
データ入力が終わってから分析前にすること
 
MCMCで研究報告
MCMCで研究報告MCMCで研究報告
MCMCで研究報告
 
ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法
 
第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)第4回DARM勉強会 (多母集団同時分析)
第4回DARM勉強会 (多母集団同時分析)
 
第1回DARM勉強会のANOVA補足(repeated measures designs)
第1回DARM勉強会のANOVA補足(repeated measures designs)第1回DARM勉強会のANOVA補足(repeated measures designs)
第1回DARM勉強会のANOVA補足(repeated measures designs)
 
DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)
 
第2回DARM勉強会
第2回DARM勉強会第2回DARM勉強会
第2回DARM勉強会
 
第2回DARM勉強会.preacherによるmoderatorの検討
第2回DARM勉強会.preacherによるmoderatorの検討第2回DARM勉強会.preacherによるmoderatorの検討
第2回DARM勉強会.preacherによるmoderatorの検討
 

170826 tokyo r_lt