Можно получить комбинации соответствующих элементов в извлеченных столбцах 'd' обоих list
s с Map
f1 <- function(x, y) {
dat <- expand.grid(x, y)
split(as.matrix(dat), row(dat))
}
do.call(Map, c(f = f1, list(lapply(j, `[[`, "d"), lapply(k, `[[`, "d"))))
Обновление
Если у нас также естьразные имена строк и хотите, чтобы они были names
в list
элементах
lapply(seq_along(j), function(i) {
x1 <- expand.grid(d1 = j[[i]]$d, d2 = k[[i]]$d)
row.names(x1) <- c(outer(row.names(j[[i]]), row.names(k[[i]]), FUN = paste))
setNames(split(as.matrix(x1), row(x1)),
paste(names(k[i]), row.names(x1), sep="_"))
})
или, как предложил @NelsonGon, map2
из tidyverse
также можно использовать
library(tidyverse)
map2(j, k, ~ crossing(d1 = .x$d, d2 = .y$d) %>%
group_split(grp = row_number(), keep = FALSE) %>%
map(flatten_dbl))