При наличии вложенного списка, как создать все возможные списки из его элементов, сохранив при этом структуру вложенного списка?
Вложенный список:
l = list(
a = list(
b = 1:2
),
c = list(
d = list(
e = 3:4,
f = 5:6
)
),
g = 7
)
Желаемый результат: все возможные комбинации элементов l
при сохранении структуры, например:
# One possible output:
list(
a = list(
b = 1
),
c = list(
d = list(
e = 3,
f = 5
)
),
g = 7
)
# Another possible output:
list(
a = list(
b = 1
),
c = list(
d = list(
e = 4,
f = 5
)
),
g = 7
)
На данный момент мой подход заключается в следующем:
- выровнять список (например, как обсуждалось в этом ответе)
expand.grid()
и получить матрицу, в которой каждая строка представляет уникальную комбинацию- проанализировать каждую строку полученной матрицы и восстановить структуру из
names()
, используя регулярные выражения
Я ищу менее громоздкий подход, потому что не могу гарантировать, что имена элементов списка не изменятся.