【发布时间】:2016-06-04 02:06:54
【问题描述】:
我怎样才能在以下子列表上逐步展开 expand.grid。
list ( list ( c (1,4,6) , c ( 2 , 5 )),list ( c (9,12), c(3,6), c(1,1),c(6,9)),list(c(8,10),c(integer(0)),c(integer(0)),c(integer(0)), c(integer(0)),c(integer(0))))
我知道我可以使用以下表达式来扩展列表上的网格,Something like expand.grid on a list of lists。
do.call ( rbind , do.call ( mapply, list, FUN = data.frame, SIMPLIFY = FALSE)))
但是,由于我的列表长度不相等,因此此功能不起作用。
所需的输出应该是一组具有不同子列表组合的子列表。如下所示,请注意列表并非所有可能的组合,但元素仅使用一次,并且始终按照子段中元素的顺序递增。
1 2
4 2
6 2
1 5
4 5
6 5
9 3 1 6
9 6 1 6
12 3 1 9
12 6 1 9
8 integer(0) integer(0) integer(0) integer(0) integer(0)
10 integer(0) integer(0) integer(0) integer(0) integer(0)
【问题讨论】:
-
不就是
lapply(list_of_lists, expand.grid)吗?如果您愿意,您可以过滤掉integer(0)s(expand.grid无法处理它们)。另外,仅供参考mapply( ... , SIMPLIFY = FALSE)只是Map。
标签: r