用R语言从一个向量中生成所有长度的组合

6
假设我有向量["a","b","c"],那么我想创建一个列表,其中包括所有大小的唯一组合(顺序无关):
["a"]
["b"]
["c"]
["a","b"]
["a","c"]
["b","c"]
["a","b","c"]

我该如何在R中完成这个操作?

尚未得到回答。链接的问题没有返回一个列表的列表。 - CodeGuy
3
去掉do.call(c, ...)的包装,它就会变成一个列表的列表。 - Rich Scriven
1个回答

17

我们可以尝试使用combn

do.call("c", lapply(seq_along(v1), function(i) combn(v1, i, FUN = list)))

数据

v1 <- letters[1:3]

这并不返回一个数组的数组。 - CodeGuy
2
@CodeGuy 你所展示的是另一种语言中的结构体。在 R 中,向量结构不同于你展示的那一种。此外,在 R 中,数组可以是矩阵(2 维)或更高维度(长度相等)。然而,列表可以容纳不同长度的向量。这就是我将向量放入列表的原因。 - akrun
1
我们找到了Java程序员 ;-),你需要按照你在问题中概述的方式吗?如果是这样,只需执行此操作:lapply(seq_along(v1), function(i) combn(v1, i, FUN = list)) - infominer
3
尽管我可以补充,@akrun的答案更好是一种数据结构。 - infominer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接