我想要生成一个列表,其中包含编号为1:N的所有2^n个子集中的R. 如何可能?如何获得所有子集高达N在R
expand.grid(rep(list(0:4), 2))
返回包含0的所有子集的数据帧:4大小2 - ,但我想的列表,它包含了所有尺寸的所有子集。
我想要生成一个列表,其中包含编号为1:N的所有2^n个子集中的R. 如何可能?如何获得所有子集高达N在R
expand.grid(rep(list(0:4), 2))
返回包含0的所有子集的数据帧:4大小2 - ,但我想的列表,它包含了所有尺寸的所有子集。
怎么样,
lapply(0:4, function(x) combn(4,x))
[[1]]
[,1]
[[2]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[[3]]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 1 2 2 3
[2,] 2 3 4 3 4 4
[[4]]
[,1] [,2] [,3] [,4]
[1,] 1 1 1 2
[2,] 2 2 3 3
[3,] 3 4 4 4
[[5]]
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
软件包集中有一个set_power
函数,它应该返回您的文字所描述的合适词的权力集合。不过,你可能想修改你的术语,因为你的代码做了一些不同的事情。 expand.grid
不返回数学集,而是有序组合。在集合论中{1,1}简化为{1}。在这种意义上,展开网格不会创建实际集合。如果你想所有的data.frames的最大长度是4是expand.grid可以使列表中,你可以得到很轻松地用:
lapply(0:4, function(n) expand.grid(rep(list(0:4), n)))
我结合这与对'magrittr'ers)'unlist(,recursive = FALSE)'('%>%unlist(recursive = FALSE)')将所有这些变成一个含有2^4个元素的列表,每个元素对应一个子集 – MichaelChirico