我有一个看起来像这样的列表对象
list1 <- list(c("A1", "A2"), "B", c("C1", "C2"))
由此我想生成一个列表,其中包含list1中所有元素组合的列表。对于list1,它应该看起来像这样
list2 <- list(list("A1", "B", "C1"), list("A1", "B", "C2"), list("A2", "B", "C1"), list("A2", "B", "C2"))
如果list1中有更多元素,则无法手动生成。我如何在R中进行此操作?
答案 0 :(得分:6)
我会建议一些不同的东西。只需使用expand.grid
并获得data.frame
组合:
expand.grid(list1)
# Var1 Var2 Var3
# 1 A1 B C1
# 2 A2 B C1
# 3 A1 B C2
# 4 A2 B C2
或者,类似地,使用“data.table”,使用CJ
:
library(data.table)
do.call(CJ, list1)
# V1 V2 V3
# 1: A1 B C1
# 2: A1 B C2
# 3: A2 B C1
# 4: A2 B C2