補遺A オブジェクト

オプションを操作するオブジェクト, パターン, そしてフックについて

オリジナルのページ: https://yihui.org/knitr/objects/

オリジナルの更新日: 2017-02-03


knitr パッケージはオプションと設定を制御する特別なオブジェクト (以下では obj と表記) を使用します. このオブジェクトは次のようなメソッドを持ちます.

  • obj$get(name): name という名前のオプションを返します. または, name が2以上の長さの名前つきベクトルである場合はリストを返します. そして name が与えられなかった場合は全てのオプションのリストを返します
  • obj$set(...): オプションを永続的に変更します. 引数 ... には tag = value の形式, または list(opt1 = value1, opt2 = value2) のようなオプションのリストとして与えられます
  • obj$merge(values): 新しいオプションリストを現在のリストに一時的にマージして, そのリストを返します (もとのリストは変更されません)
  • obj$restore(): オブジェクトを元に戻します

knitr のこれらのオブジェクトはユーザーから見ることができます.

knit_patterns 以外の他の全てのオブジェクトはデフォルトの初期値が設定されており, knit_paterns は特に指定がない場合は入力ファイルのタイプに基づいて自動的に決定されます. knit_hooks オブジェクトは1番よく使うことになるでしょう. そして残りの3つは直接使用する機会は少ないと思います. たとえば opts_chunk はたいていはコマンドラインで直接実行するよりも入力ファイル内で設定します.

各チャンクが依存している knitr の設定は, そのチャンクが実行されるまえに設定されなければなりません. スクリプトの一番最初の, 他のどのチャンクよりも先に実行される位置に「knit の設定用チャンク」を書き, その中で cache = FALSE, include = FALSE オプションを設定することをおすすめします. 設定用チャンクには, このチャンク自身の実行時に有効化される設定を想定する命令文は含めてはいけません33. 設定用チャンクはこのようになるでしょう34.

```<<setup, cache=FALSE, include=FALSE>>=
library(knitr)
opts_knit$set(upload.fun = imgur_upload, self.contained = FALSE,
              root.dir = '~/R/project')
@
```

技術的な注意点として, これらのオブジェクトはクロージャに近い性質であることを挙げます. これらは関数によって返される, 関数リストです. 詳細は, エクスポートされてない knitr:::new_defaults 関数を確認してください. チャンクオプションはクロージャによっても管理されています.


  1. 訳注: チャンクオプションの評価はそのチャンクの実行直前になるため, ここでの変更は次のチャンクまで有効にならない, という意味です↩︎

  2. 訳注: この例は .Rnw のものであり, << ... >>= というヘッダの記法も.Rnw で使われることに注意してください. R Markdown では {r, ...} を使います (参考: 1.1 章)↩︎