メモ:rmarkdown
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
メモ:rmarkdown [2020/05/11 18:16] – [PDF出力用の基本設定] admin | メモ:rmarkdown [2020/07/16 17:25] – [回帰分析の結果出力] Wiki Editor | ||
---|---|---|---|
行 30: | 行 30: | ||
- \setpagelayout * {margin=20mm} | - \setpagelayout * {margin=20mm} | ||
- \renewcommand{\baselinestretch}{0.9} | - \renewcommand{\baselinestretch}{0.9} | ||
+ | - | ||
- \usepackage[compact]{titlesec} | - \usepackage[compact]{titlesec} | ||
- | - \titlespacing*{\section}{0pt}{*0}{0pt} | + | - \titlespacing{\section}{0pt}{5pt}{3pt} |
- | - \titlespacing*{\subsection}{0pt}{*0}{0pt} | + | - \titlespacing{\subsection}{0pt}{5pt}{3pt} |
+ | - | ||
- \renewcommand{\labelitemi}{■} | - \renewcommand{\labelitemi}{■} | ||
- \renewcommand{\labelitemii}{$\circ$} | - \renewcommand{\labelitemii}{$\circ$} | ||
行 116: | 行 118: | ||
図表を連続して作成する場合など、チャンク内のLoopから別のチャンクを生成したい場合がある。 | 図表を連続して作成する場合など、チャンク内のLoopから別のチャンクを生成したい場合がある。 | ||
- | まずテンプレートとなるチャンクを作成する。ループで回すように、必要な個所は変数化し該当箇所を「{{変数名}}」にしておく。以下の例では、チャンク名とキャプション、ggplotのy軸に使う変数名を外部から与えるパラメータにした。 | + | まずテンプレートとなるチャンクを作成する。ループで回すように、必要な個所は変数化し該当箇所を「%%{{%%変数名%%}}%%」にしておく。以下の例では、チャンク名とキャプション、ggplotのy軸に使う変数名を外部から与えるパラメータにした。 |
```{r チャンク名_{{prm_chankname}}, | ```{r チャンク名_{{prm_chankname}}, | ||
ggplot(data=DAT, | ggplot(data=DAT, | ||
geom_line() ... | geom_line() ... | ||
+ | | ||
``` | ``` | ||
行 184: | 行 186: | ||
このように、改行「\n」が入った文字列やベクトルをlinebreakに渡してやるとよい。 | このように、改行「\n」が入った文字列やベクトルをlinebreakに渡してやるとよい。 | ||
+ | ===== 回帰分析の結果出力 ===== | ||
+ | |||
+ | 回帰分析の結果の出力は、texregパッケージを使うと手間なく美しくできる。類似パッケージもあるが、とりあえずこのパッケージを使っている。 | ||
+ | |||
+ | ここでは主にPDFに出力するために使っているので、要するにLatexのコードを出力するために利用している。 | ||
+ | |||
+ | 単純に回帰分析の結果を出力するだけなら以下。 | ||
+ | # lm()の結果がres.lmに代入されているとして | ||
+ | texreg( | ||
+ | list(res.lm), | ||
+ | digits = 3, | ||
+ | caption = " | ||
+ | float.pos = " | ||
+ | ) | ||
+ | |||
+ | 関数の第一引数に回帰分析の結果が入ったオブジェクトをリストで渡してやればよい。複数の結果を与えると、自動的に横に並べて表示してくれる。2つのモデルの結果で同じ変数があれば、同じ行に示してくれる。モデル内の変数が異なる行は、存在しない場合は空白になって表示される。その他によく使うのは、小数点以下の桁数、キャプション、Latex側でfloatで表を挿入する際のオプション指定など。これ以外にも、モデル名を設定(custom.model.names)や変数名を設定(custom.coef.names)、変数の順序(reorder.coef)、表示しない変数(omit.coef:正規表現で除外変数を指定)など細かく指定できる。 | ||
+ | |||
+ | なお、開発中は「texreg」の部分を「screenreg」にしておくと、インラインで見やすいように出力してくれる。 | ||
+ | |||
+ | ロジスティック回帰を行ったときなど、結果の係数を指数変換してオッズ比にしたい場合などがある。その場合は、次のように係数をいったん取り出して、オーバーライドしてやればよい。 | ||
+ | |||
+ | # res.glmにglm()の結果が代入されているとして | ||
+ | | ||
+ | # texregパッケージのextract関数で各種係数を取り出す | ||
+ | # ロードしていてもパッケージ名を指定しないと同名の関数が被ることがよくある | ||
+ | res.glm.ext <- texreg:: | ||
+ | | ||
+ | texreg( | ||
+ | list(res.glm), | ||
+ | # 上のリストで与えたモデルと同じ順で上書きする係数の入ったオブジェクトをリストで渡す | ||
+ | # ここでは先にextractで取り出した係数を指数変換してオッズ比にしている | ||
+ | override.coef = list(exp(res.glm.ext@coef)), | ||
+ | override.se = list(exp(res.glm.ext@se)), | ||
+ | digits = 3, | ||
+ | caption = " | ||
+ | float.pos = " | ||
+ | ) | ||
+ | |||
+ | ===== 図のテキスト回り込み ===== | ||
+ | |||
+ | 例によってRmarkdownからPDFを出力する際の細かい設定は、RmarkdownからLatexを制御しなければならないため、やや複雑になる。他に利用しているパッケージによってはうまく動かないなど、実用レベルではない気もする。とりあえず現状のメモ。 | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | まず、Latexでwrapfigを読み込む。 | ||
+ | |||
+ | header-includes: | ||
+ | - \usepackage{wrapfig} | ||
+ | |||
+ | ただし、titlesecパッケージを読み込むとうまく動かない。 | ||
+ | |||
+ | - \usepackage[compact]{titlesec} | ||
+ | |||
+ | |||
+ | bxjsarticleのクラスオプションにeveryparhook=compatを指定しないとうまく動かない。 | ||
+ | |||
+ | documentclass: | ||
+ | classoption: | ||
+ | |||
+ | |||
+ | 次に、Rmarkdownで図を出力する際にLatex側に指定する環境を書き換える(たぶん) | ||
+ | |||
+ | ```{r, include = F} | ||
+ | defOut <- knitr:: | ||
+ | knitr:: | ||
+ | x <- defOut(x, options) | ||
+ | if(!is.null(options$wrapfigure)) { # then, if option wrapfigure is given ... | ||
+ | # create the new opening string for the wrapfigure environment ... | ||
+ | wf <- sprintf(" | ||
+ | x <- gsub(" | ||
+ | x <- gsub(" | ||
+ | } | ||
+ | return(x) | ||
+ | }) | ||
+ | ``` | ||
+ | |||
+ | 図を出力するチャンクでwrapfigureオプションを指定する。ここでは図を右寄せで行幅の70%の大きさに指定している。 | ||
+ | |||
+ | ```{r echo = F, warning = F, message = F, fig.width=7, | ||
+ | plot(mpg ~ hp, data = mtcars) | ||
+ | ``` | ||
+ | |||
+ | ということで、何とか回り込みを設定できるものの、いろいろと問題が多い。素直にRmarkdownから指定できるようになってほしい。 | ||
メモ/rmarkdown.txt · 最終更新: 2023/06/22 11:00 by Wiki Editor