パッケージオプションとフック
R Markdownで.Rmdファイルからレポートを作る際,{knitr}
パッケージにより行われています。{knitr}
のパッケージオプションを設定することで,
パッケージオプションの設定方法
パッケージオプションはセットアップチャンクで設定するのが良いでしょう。opts_
という書式で設定します。
```{r setup, include=FALSE}
# セットアップチャンク
library(knitr)
opts_knit$set(progress = FALSE) # 変換処理の際のプログレスバーを非表示に
```
という感じです。
aliases
aliases
オプションを設定すると,
```{r setup, include=FALSE}
# セットアップチャンク
library(knitr)
opts_knit$set(aliases = c(h="fig.height", w="fig.width"))
```
テキスト・・・
```{r iris-plot, h=12, w=12}
plot(iris)
```
とすれば,iris-plot
チャンクではfig.
と指定されたことになります。地味機能ですが,
チャンクオプションの評価とeval.after
実はRコードチャンクでは,eval.
で指定されたチャンクオプションは,
意味がよくわからないと思いますので,
```{r setup, include=FALSE}
# セットアップチャンク
library(knitr)
opts_knit$set(eval.after = c("fig.cap"))
```
テキスト・・・
```{r cor-plot, fig.cap = paste0('図1: R = ', corr)}
x = rnorm(100)
y = rnorm(100)
corr = cor(x, y)
plot(x, y)
```
このようにすることで,corr
が計算されて,fig.
に反映されます。 サンプル出力はこちらです。
global.par
によるグラフィックスパラメータのグローバル化
解析処理のレポートには大量のグラフが含まれていることも多いでしょう。Rではマージンや背景色といったグラフのパラメータはpar()
関数で設定します。R Markdownの場合,par()
による設定を記述する必要があり,global.
をTRUE
とすることで,
```{r setup, include=FALSE}
# セットアップチャンク
library(knitr)
opts_knit$set(global.par = TRUE)
```
```{r}
par(bg = "pink")
plot(1:10)
```
```{r}
# 上のチャンクのpar()の設定が再利用される
plot(10:1)
```
これで,
フック
R Markdown{knitr}
パッケージ)
ここでは,
```{r setup, include=FALSE}
# セットアップチャンク
library(knitr)
prow = function(before, options, envir) {
if (!before) {
paste0(c("<p>コードは", length(options$code), "行です</p>"))
}
}
knit_hooks$set(prow = prow)
```
```{r, prow=TRUE, echo=FALSE}
# ?histでのヒストグラム作成例
r <- hist(sqrt(islands), breaks = c(4*0:5, 10*3:5, 70, 100, 140),
col = "blue1")
text(r$mids, r$density, r$counts, adj = c(.5, -.5), col = "blue3")
sapply(r[2:3], sum)
sum(r$density * diff(r$breaks)) # == 1
lines(r, lty = 3, border = "purple") # -> lines.histogram(*)
```
サンプル出力はこちらです。
まずセットアップチャンクで,prow
を定義し,knit_
でフック名prow
としてフックに登録しています。次に,prow=TRUE
として,prow
フックを使うことを指示します。そうすると,prow
が呼び出されます。フック関数ではoptions
引数を使ってチャンクの情報にアクセスすることができます。
この連載ではフックについての解説はいわゆるbeyond scopeですのでこれ以上の説明はやめておきますが,
なお,