R - 两个列表的行方式组合

时间:2015-05-03 08:49:58

标签: r list combinations

假设我有两个长度相同的列表。

l1 <- list(c("a", "b", "c"), "d")
l2 <- list(c("e", "f"), c("g", "h", "i"))

列表的每个行/元素都可以看作是一个特定的对。所以在这个例子中有两个向量

c("a", "b", "c")
c("e", "f")

“属于一起”,其他两个也是如此。

我需要获得具有相同索引的这两个向量的所有可能组合/排列。

我知道我可以将expand.grid(c("a", "b", "c"), c("e", "f"))用于两个向量,但我正在努力迭代地在两个列表上执行此操作。我尝试使用mapply(),但无法提出解决方案。

首选输出可以是数据框或包含所有可能的行方式组合的列表。没有必要保留“源对”的信息。我只对这些组合感兴趣。

因此,可能的输出可能如下所示:

  l1 l2
1  a  e
2  b  e
3  c  e
4  a  f
5  b  f
6  c  f
7  d  g
8  d  h
9  d  i

1 个答案:

答案 0 :(得分:4)

您可以使用Map循环列表元素,然后使用rbind

do.call(rbind, Map(expand.grid, l1, l2))
#  Var1 Var2
#1    a    e
#2    b    e
#3    c    e
#4    a    f
#5    b    f
#6    c    f
#7    d    g
#8    d    h
#9    d    i

Map只有mapply,默认设置不同。