我想生成一个列表,其中包含R中数字1:N的所有2 ^ n个子集.如何可能?
expand.grid( rep( list( 0:4), 2))
Run Code Online (Sandbox Code Playgroud)
返回包含0:4大小2的所有子集的数据框 - 但我想要一个列表,其中包含所有大小的所有子集.
Jam*_*mes 10
怎么样,
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
Run Code Online (Sandbox Code Playgroud)
set_power包集中有一个函数应该返回幂集,这是你的单词描述的正确术语.但是,您可能希望修改术语,因为您的代码正在执行不同的操作.expand.grid不返回数学集而是返回有序组合.在集理论中,{1,1}简化为{1}.在这种意义上,展开网格不会创建真正的集合.如果你想要expand.grid可以制作的长度为4的所有data.frames列表,你可以通过以下方式轻松搞定:
lapply(0:4, function(n) expand.grid( rep( list( 0:4), n)) )
Run Code Online (Sandbox Code Playgroud)