0

drake パッケージのドキュメントを読んだところ、「file_in」と「file_out」を使用せずにターゲットの順序を定義する方法が他に見つかりませんでした。

file_in() は、ターゲットが依存する個々のファイル (およびディレクトリ全体) をマークします。

file_out() は、ターゲットが作成する個々のファイル (およびディレクトリ全体) をマークします。

ただし、動的ターゲットで両方を使用することはできません。

では、動的ターゲット間で従うべき順序を定義するにはどうすればよいでしょうか? も使用しようとしましmake(plan, targets = c("ftp_list", "download.dbc", "dbc_list", "generate_parquet"))たが、うまくいきませんでした

たとえば、次のコードには 4 つのターゲットがあります。私が欲しいもの(注文):

  1. サーバーから ftp リストを取得する
  2. ftp リストから最初のファイルをダウンロードします (すべてをダウンロードするための hd のスペースがほとんどありません)。
  3. ダウンロードしたファイルを入手する
  4. .parquet として変換します (そして、最初からやり直します。2 番目のファイルをダウンロードし、parquet に変換します...)

file_in と file_out を使用せずに動的ターゲットをリンクする方法はありますか (この場合は許可されていません)。ありがとう!

例としてのコード:

URL <- "ftp://ftp.url"
LOCAL_PATH <- paste0(getwd())

plan <- drake_plan(

  ftp_list = obtain_filenames_from_url(url_ = URL, 
                                       remove_extension_from_filename_ = FALSE,
                                       full_names = TRUE)[0:10],

  download.dbc = target(download_dbc(ftp_list, 
                                local_path = paste0(LOCAL_PATH, "/")), 
                   dynamic = map(ftp_list)),

  dbc_list = target(list.files(LOCAL_PATH, full.names = TRUE, 
                               pattern = "*.dbc")),

  generate_parquet = target(convert_dbc(dbc_list, delete_dbc_after_conversion = TRUE),  
                            dynamic = map(dbc_list))
)

計画グラフ出力:

ここに画像の説明を入力

4

1 に答える 1