targets
バージョン 0.5.0 でリリースされる Target Markdown の機能を利用すると、R Markdown 文書中で targets パイプラインを定義できる。
しかし、ドキュメントに示されている例ではターゲットを定義するコードとその実行結果が離れた位置に来てしまう。コードと結果の対応をわかりやすく示すためには近くに表示したい。
そこで、ターゲット定義コードの近くに実行結果を表示するにはどうすれば良いか調べる。
targets
チャンクをすべて実行する前に tar_make()
を実行すると、その時点までに完成したパイプラインが実行される。targets
チャンクを追加してからまた tar_make()
を実行してもちゃんとキャッシュが効く。tar_make()
と tar_read()
を実行する。まず targets
をロードする
library(targets)
もし過去に生成されたパイプライン定義ファイル(_targets_r
フォルダ)が残っていたら削除しておく
tar_unscript()
もし過去のパイプライン実行結果(_targets/
フォルダ)が残っていたら削除する
tar_destroy()
targets のオプション設定やグローバル関数・グローバル変数の定義には targets
チャンクに tar_globals = TRUE
のオプションをつける。
このチャンクを対話モードで実行すると普通にRコードとして実行され、グローバル環境の変数に値が代入される。 非対話モードで実行すると _targets_r/globals/
フォルダにスクリプトファイルが作成される。
options(tidyverse.quiet = TRUE)
tar_option_set(packages = c("biglm", "dplyr", "ggplot2", "readr", "tidyr"))
create_plot <- function(data) {
ggplot(data) +
geom_histogram(aes(x = Ozone), bins = 12) +
theme_gray(24)
}
#> Established _targets.R and _targets_r/globals/example-globals.R.
targets
チャンクに tar_globals
オプションをつけない場合、target オブジェクトの定義を表す。
このチャンクを対話モードで実行すると、単にグローバルオブジェクト raw_data
にコマンド airquality
の戻り値が代入される。 非対話モードで実行すると、_targets_r/targets/
フォルダにターゲット定義用のスクリプトが生成される。
tar_target(raw_data, airquality)
#> Established _targets.R and _targets_r/targets/raw-data.R.
上記の targets
チャンクが非対話モードで実行してあれば、targets
パイプラインが定義されている。
この時点でパイプラインを可視化してみる。
tar_visnetwork()
この時点でパイプラインを実行してみる
tar_make()
#> • start target raw_data
#> • built target raw_data
#> • end pipeline
もう一度パイプラインを可視化してみる
tar_visnetwork()
targets
チャンクでパイプラインにターゲットを追加する
list(
tar_target(data, raw_data %>% filter(!is.na(Ozone))),
tar_target(hist, create_plot(data))
)
#> Established _targets.R and _targets_r/targets/downstream-targets.R.
またパイプラインを可視化する
tar_visnetwork()
既に実行済みのターゲット raw_data
は “Up to date” の状態に、 新しく追加されたターゲット data
, hist
は “Outdated” の状態になっている。
パイプラインを再実行する。
tar_make()
#> ✓ skip target raw_data
#> • start target data
#> • built target data
#> • start target hist
#> • built target hist
#> • end pipeline
“Up to date” だったターゲット raw_data
の実行はスキップされ、新しいターゲット data
, hist
が実行される。
また可視化する
tar_visnetwork()
すべて “Up to date” になっている。
ターゲット hist
の実行結果を読み取って表示する
tar_read(hist)
tar_simple = TRUE
オプションまた targets
チャンクで新たなターゲットを追加する。 このとき tar_simple = TRUE
オプションを利用する。 このチャンクは tar_target(fit, biglm(Ozone ~ Wind + Temp, data))
でターゲットを定義するのと同じ意味になる。
tar_target(fit, {
biglm(Ozone ~ Wind + Temp, data)
})
#> Defined target fit automatically from chunk code.
#> Established _targets.R and _targets_r/targets/fit.R.
またパイプラインを可視化
tar_visnetwork()
パイプラインを再実行
tar_make()
#> ✓ skip target raw_data
#> ✓ skip target data
#> • start target fit
#> • built target fit
#> ✓ skip target hist
#> • end pipeline
また可視化
tar_visnetwork()