Я добавил еще несколько мыслей к этому, и это, кажется, делает свое дело.
На первом шаге я объединил все имена векторов:
vectors = c("v_1", "v_2", "v_3")
Во-вторых, я создалСписок всех взаимоисключающих способов объединения этих трех векторов:
list_comb_vectors = do.call("c", lapply(seq_along(vectors), function(i) combn(vectors, i, FUN = list)))
В-третьих, я создал функцию, которая обрабатывает все эти комбинации, то есть от 1 до length(list_comb_vectors)
. Наконец, я использую функцию expand.grid()
:
go_through_combination <- function(v) {
i = list_comb_vectors[[v]]
list_of_vars = do.call("c", lapply(seq_along(i), function(x) paste0(i[x],"=",i[x])))
list_of_expression = paste(list_of_vars, collapse=",")
eval(parse(text = paste0('expand.grid(', list_of_expression, ')')))
}
mapped <- map_df(1:length(list_comb_vectors), go_through_combination)
Несмотря на то, что это решает проблему, я уверен, что есть более элегантное решение проблемы.