ワークフローオブジェクトの読み込み
最終更新日:2026-10-23 | ページの編集
概要
質問
- ワークフローはどこで実行されますか?
- ワークフローによって作成されたオブジェクトをどのように検査できますか?
目的
-
targetsがワークフローを実行する場所とその理由を説明する - ワークフローによって作成されたオブジェクトをRセッションにロードできるようにする
ワークフローはどこで実行されますか?
私たちはちょうどワークフローを実行しました。
今、出力を見たいと思うでしょう。 しかし、オブジェクトの名前(例えば
penguins_data)を呼び出すだけではエラーが発生します。
R
penguins_data
エラー
Error:
! object 'penguins_data' not found
ワークフローの結果はどこにありますか?
ワークフローの結果が見えないのは、targets
がワークフローを別のRセッションで実行するためであり、そのセッションと対話することができないからです。
これは再現性のためです—ワークフローによって作成されたオブジェクトは、プロジェクト内のコードのみに依存すべきであり、Rに対してインタラクティブに与えたコマンドには依存すべきではありません。
幸いにも、targets
にはワークフローによって作成されたオブジェクトを現在のセッションにロードするために使用できる関数、tar_load()
があります。 どのように機能するか見てみましょう。
tar_load()
tar_load()
は、ワークフローによって作成されたオブジェクトを現在のセッションにロードします。
最初の引数はロードしたいオブジェクトの名前です。 これを使用して
penguins_data をロードし、summary()
でデータの概要を取得しましょう。
R
tar_load(penguins_data)
summary(penguins_data)
出力
species bill_length_mm bill_depth_mm
Length :342 Min. :32.10 Min. :13.10
N.unique : 3 1st Qu.:39.23 1st Qu.:15.60
N.blank : 0 Median :44.45 Median :17.30
Min.nchar: 33 Mean :43.92 Mean :17.15
Max.nchar: 41 3rd Qu.:48.50 3rd Qu.:18.70
Max. :59.60 Max. :21.50
tar_load()
は副作用—望むオブジェクトを現在のRセッションにロードするために使用されます。
実際には値を返しません。
targets キャッシュ
Rセッションを終了し、再起動して tar_load()
を使用すると、ワークフローオブジェクトをまだロードできることに気づくでしょう。
言い換えれば、ワークフローの出力はRセッション間で保存されています。
これはどのように可能なのでしょうか?
プロジェクトに新しいフォルダ _targets
が現れたことに気づいたかもしれません。 これはtargets
キャッシュです。
ワークフローの出力すべてが含まれています。これにより、Rを終了して再起動した後でもワークフローによって作成されたターゲットをロードできるのです。
キャッシュの内容を手動で編集してはいけません。 そうすると、分析の再現性が失われます。
単に _targets
フォルダ全体を削除することで、ワークフローを「リセット」することが可能です。
もちろん、これはすべてを再実行する必要があることを意味するため、軽率に行わないでください!
オプションのチャレンジ:
tar_read()
このチャレンジはオプションです。
tar_script() が作成した _targets.R
ファイルの先頭のコメントを見ると、別の関数 tar_read()
について書かれています。 tar_load()
と同様に、ワークフローによって作成されたオブジェクトを取得します。
tar_read(penguins_csv_file) を試し、その後
penguins_csv_file を実行してみてください。
何が表示されますか?
ターゲットの内容をオブジェクトとしてRセッションにロードすることと、読み取ることの違いは何でしょうか?
どのような場合に一方ではなくもう一方を使いたくなるでしょうか?
tar_read()
はターゲットの値を返すので、すぐに表示されます:
R
tar_read(penguins_csv_file)
出力
[1] "data/penguins_raw.csv"
しかし、それは環境にロードされていないため、penguins_csv_file
を実行しようとするとエラーが発生します:
R
penguins_csv_file
エラー
Error:
! object 'penguins_csv_file' not found
対照的に、tar_load()
はターゲットと同じ名前のオブジェクトをRセッション内に作成し、目に見える値は何も返しません。
その後は、そのオブジェクトを何度でも使用できます。
tar_load()
はオブジェクトをロードしてそれらを操作したいときにより便利です。
tar_read()
はターゲットを即座に検査したいときや、その値を別の名前のオブジェクトに保存したいとき(たとえば
my_data <- tar_read(penguins_data))により便利です。
-
targetsのワークフローは別の非対話型Rセッションで実行されます -
tar_load()はワークフローオブジェクトを現在のRセッションにロードします -
_targetsフォルダはキャッシュであり、一般的には手動で編集すべきではありません