我有一个看起来像这样的列表对象
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 中执行此操作?
最佳答案
我会建议一些不同的东西。只需使用 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
关于r - 正确使用应用函数从列表元素组合生成列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26339595/