如何从r-drake中的多个文件导入?

时间:2019-10-19 19:27:45

标签: drake-r-package

我想从多个源文件中导入相似类别的数据。

每个来源都有一个简短的标签。

如何将其合并到drake中,而不必将每个文件都写为自己的目标?

我认为以下方法会起作用,但不会。理想情况下,我希望有目标raw_araw_b

input_files <- list(
  'a' = 'file_1.csv',
  'b' = 'file_2.csv'
)

plan <-
  drake::drake_plan(
    raw = drake::target(
      import_file(file),
      transform = map(
        file = file_in(!! input_files)
      )
    )
  )

使用

import_file <- function(file) {
  readr::read_csv(file, skip = 2)
}

3 个答案:

答案 0 :(得分:2)

您是如此亲密。 file_in()确实要放在命令中,而不是转换中。

library(drake)
input_files <- c("file_1.csv", "file_2.csv")

plan <- drake_plan(
  raw = target(
    import_file(file_in(file)),
    transform = map(file = !!input_files)
  )
)

config <- drake_config(plan)
vis_drake_graph(config)

reprex package(v0.3.0)于2019-10-19创建

答案 1 :(得分:0)

这可能是惯用的解决方案。

plan <-
  drake::drake_plan(
    raw = drake::target(
      import_file(file),
      transform = map(
        file = file_in('file_1.csv', 'file_2.csv'),
        label = c('a', 'b'),
        .id = label
      )
    )
  )

答案 2 :(得分:0)

file_in需要包含整个字符串

plan <-
  drake::drake_plan(
    raw = drake::target(
      import_file(file),
      transform = map(
        file = list(
  file_in('file_1.csv'),
  file_in('file_2.csv')
)
      )
    )
  )