R - 两个列表的按行组合
R - row-wise combinations of two lists
假设我有两个相同长度的列表。
l1 <- list(c("a", "b", "c"), "d")
l2 <- list(c("e", "f"), c("g", "h", "i"))
列表中的每个 row/element 都可以看作是特定的一对。所以在这个例子中,两个向量
c("a", "b", "c")
c("e", "f")
"belong together" 其他两个也是。
我需要获取具有相同索引的这两个向量的所有可能 combinations/permutations。
我知道我可以对两个向量使用 expand.grid(c("a", "b", "c"), c("e", "f"))
,但我很难在两个列表上迭代地执行此操作。我尝试使用 mapply()
,但找不到解决方案。
首选输出可以是数据框或包含所有可能的行组合的列表。没有必要保留"source pair"的信息。我只是对这些组合感兴趣。
因此,可能的输出可能如下所示:
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
您可以使用 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
具有不同的默认值。
假设我有两个相同长度的列表。
l1 <- list(c("a", "b", "c"), "d")
l2 <- list(c("e", "f"), c("g", "h", "i"))
列表中的每个 row/element 都可以看作是特定的一对。所以在这个例子中,两个向量
c("a", "b", "c")
c("e", "f")
"belong together" 其他两个也是。
我需要获取具有相同索引的这两个向量的所有可能 combinations/permutations。
我知道我可以对两个向量使用 expand.grid(c("a", "b", "c"), c("e", "f"))
,但我很难在两个列表上迭代地执行此操作。我尝试使用 mapply()
,但找不到解决方案。
首选输出可以是数据框或包含所有可能的行组合的列表。没有必要保留"source pair"的信息。我只是对这些组合感兴趣。
因此,可能的输出可能如下所示:
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
您可以使用 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
具有不同的默认值。