我正在使用德雷克工作流程来处理约 100 个文件,这些文件存储在一个文件名很长的位置。这些长文件名使依赖图难以阅读。这是一个最小的例子:
# example setup
library(drake)
very_long_path <- "this_is_a_very_long_file_path_which_makes_the_dependency_graph_hard_to_read"
dir.create(very_long_path)
filenames <- paste0("file_", seq(4), ".csv")
for (file in filenames) {
file.create(file.path(very_long_path, file))
}
files <- list.files(very_long_path, full.names = TRUE)
ids <- rlang::syms(filenames)
# my drake plan
plan <- drake_plan(
raw = target(
read.csv(file_in(!!file)),
transform = map(file = !!files)
)
)
plan
## A tibble: 4 x 2
# target command
# <chr> <expr>
#1 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
#2 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
#3 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
#4 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
vis_drake_graph(drake_config(plan)) ## very hard to read
我已阅读以下.id
内容?transformations
:
符号或符号向量命名分组变量以合并到目标名称中。用于创建短目标名称。设置 .id = FALSE 以使用整数索引作为目标名称后缀。
这就是我ids
在上面的代码中创建以便为目标提供短名称的原因。但是如下更改计划并没有帮助:
plan <- drake_plan(
raw = target(
readLines(file_in(!!file)),
transform = map(file = !!files,
.id = !!ids)
)
)
plan
## A tibble: 4 x 2
# target command
# <chr> <expr>
#1 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
#2 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
#3 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
#4 raw_this_is_a_very_long_file_path_which_makes_t~ readLines(file_in("this_is_a_very_long_file_path_whic~
据我了解,ids
是一个符号向量,所以我不明白为什么这不起作用。我错过了什么?这甚至可能吗?
我也尝试ids
作为字符向量插入,但没有成功。我知道我可以设置.id = FALSE
为简单地枚举 raw 的元素,但我真的想保留文件名。