Следующая структура дается:сочетающий в себе элементы различной длины из вложенного списка
a <- list()
a[[1]] <- list(c(1:3),c(3:8))
a[[2]] <- list(c(2:6),c(7:9),c(18:24))
a[[3]] <- list(c(11:13),c(10:16),c(17:19),c(11:14),c(17:20))
a[[1]]
Это означает, что имеет 2 элемента, a[[2]]
3 элементов и a[[3]]
5 элементов.
Я хотел бы создать все возможные комбинации из элементов внутри. Так, например, a[[1]][1]
может быть объединен с a[[2]][1]
, a[[2]][2]
и a[[2]][3]
. Все эти результаты могут быть объединены с a[[3]][1]
, ..., a[[3]][5]
(В целом это должно быть 30 комбинаций). Комбинируя, я имею в виду применение c
к элементам.
Я предполагаю, что это сводится к поисковым элементам в конце дерева (например, если у меня есть A1 или A2 в фазе 1, B1 или B2 в фазе 2 и C1 или C2 в фазе 3, все результаты будут следующими: A1B1C1 , A1B1C2, A1B2C1, A1B2C2, A2B1C1, A2B1C2.)
Теперь я знаю, как это сделать с тройным вложенным циклом, но что произойдет, если список a станет больше? Я не знаю, можно ли это сделать иначе. Любые предложения оценили.
как 'expand.grid (sapply (длины (а), seq.int))' и сделать некоторую индексацию – rawr
со списком топ н-элементного (в вашем case 'a' имеет три элемента), он похож на индексирование n-мерного массива. – jogo