2

drake変数でパスを指定したい複数の出力ファイルを作成するために使用しています。何かのようなもの

outpath <- "data"
outfile <- file.path(outpath, "mydata.csv")
write.csv(df, outfile)

しかしfile_out、リテラル文字以外に与えられた引数では機能しないようです。

小さなコード例を示すには:

コード設定

library(drake)

outpath <- "data"
# for reproducibility only
if (!dir.exists(outpath)) dir.create(outpath)

make_data <- function() data.frame(x = 1:10, y = rnorm(10))

作業コード

ファイルを直接指定する:

p0 <- drake_plan(
  df = make_data(),
  write.csv(df, file_out("data/mydata0.csv"))
)
make(p0)
#> target file "data/mydata0.csv"

失敗コード

file.path出力ファイルの作成に使用

p1 <- drake_plan(
  df = make_data(),
  write.csv(df, file_out(file.path(outpath, "mydata1.csv")))
)
make(p1)
#> target file "mydata1.csv"
#> Error: The file does not exist: mydata1.csv
#> In addition: Warning message:
#> File "mydata1.csv" was built or processed,
#> but the file itself does not exist. 

ドレイクはリテラル文字列のみをターゲットとして検出し、 の結果を検出しないと思いますfile.path(...)。たとえば、これも失敗します

p2 <- drake_plan(
  df = make_data(),
  outfile = file.path(outpath, "mydata1.csv"),
  write.csv(df, file_out(outfile))
)
#> Error: found an empty file_out() in command: write.csv(df, file_out(outfile))

それを修正する方法はありますか?

4

1 に答える 1