Вот еще одно базовое решение R в дополнение к expand.grid
подходу @Onyambu.
Особенность этого кода ниже в том, что вам нужно всего лишь поместить все в перечислите lst
и передайте его функции f
:
f <- function(lst) data.frame(mapply(function(p,n) rep(p,each=n),lst, prod(lengths(lst))/cumprod(lengths(lst))))
lst<- list(x = 3:4,y = 1:2,z = 1:3)
res <- f(lst)
так, чтобы
> res
x y z
1 3 1 1
2 3 1 2
3 3 1 3
4 3 2 1
5 3 2 2
6 3 2 3
7 4 1 1
8 4 1 2
9 4 1 3
10 4 2 1
11 4 2 2
12 4 2 3