德雷克岩石!我有一个复杂的多级处理问题。这个问题可以用这个例子来说明。我在级别 l 有 2 个进程,我希望所有级别 1 进程生成的所有数据集都由级别 2 的单个目标处理。
下面的代码做了我想要的,但我必须在第 2 级重复代码,在我的复杂情况下,这似乎是错误的。
library(drake)
library(tidyverse)
f_process1a = function(x) {
x
}
f_process1b = function(x) {
x
}
f_process2 = function(data, x) {
c(data, x )
}
drakeplan <- drake::drake_plan(
process1a = target(
f_process1a (process1a_var),
transform = map( process1a_var = c(1,2) )
)
,
#
process1b = target(
f_process1b ( process1b_var),
transform = map(process1b_var = c(2,3) )
)
,
process2a = target(
f_process2( process1a, process2_var ),
transform=cross( process1a, process2_var = c(4,5))
)
,
process2b = target(
f_process2( process1b, process2_var ),
transform=cross( process1b, process2_var = c(4,5))
)
)
drake_plan_source(drakeplan )
#> drake_plan(
#> process1a_1 = f_process1a(1),
#> process1a_2 = f_process1a(2),
#> process1b_2 = f_process1b(2),
#> process1b_3 = f_process1b(3),
#> process2a_4_process1a_1 = f_process2(process1a_1, 4),
#> process2a_5_process1a_1 = f_process2(process1a_1, 5),
#> process2a_4_process1a_2 = f_process2(process1a_2, 4),
#> process2a_5_process1a_2 = f_process2(process1a_2, 5),
#> process2b_4_process1b_2 = f_process2(process1b_2, 4),
#> process2b_5_process1b_2 = f_process2(process1b_2, 5),
#> process2b_4_process1b_3 = f_process2(process1b_3, 4),
#> process2b_5_process1b_3 = f_process2(process1b_3, 5)
#> )
由reprex 包(v0.3.0)于 2019 年 9 月 5 日创建
我想将 process2[ab] 步骤组合成一个目标。这可能吗?
似乎我应该能够有一个目标,例如:
process2 = target(
f_process2( data, process2_var ),
transform=cross( data=c(process1a, process2a),
process2_var = c(4,5))
)
但这不起作用。