我正在尝试创建一个工作流程计划,该计划将为my_function(x, y)
所有输入组合运行一些功能,my_dataset
但对于如何在不使用粘贴的情况下为德雷克的工作流程生成命令而陷入困境。
考虑:
library(drake)
library(dplyr)
A <- 'apple'
B <- 'banana'
C <- 'carrot'
my_function <- function(x, y)
paste(x, y, sep='|IT WORKS|')
my_function(A, B)
combos <- combn(c('A', 'B', 'C'), 2) %>%
t() %>%
as_data_frame()
targets <- apply(combos, 1, paste, collapse = '_')
commands <- paste0('my_function(', apply(combos, 1, paste, collapse = ', '), ')')
my_plan <- data_frame(target = targets, command = commands)
make(my_plan)
输出:
> my_plan
# A tibble: 3 x 2
target command
<chr> <chr>
1 A_B my_function(A, B)
2 A_C my_function(A, C)
3 B_C my_function(B, C)
上面的代码有效,但我使用 paste0 来生成函数调用。我认为这不是最佳的,而且扩展性很差。有没有更好的方法来生成这些计划?这可能不是一个德雷克问题,而是一个rlang
问题。