Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中迭代地找到集合的所有可能子集?_R_Loops_Combinations_Iteration - Fatal编程技术网

如何在R中迭代地找到集合的所有可能子集?

如何在R中迭代地找到集合的所有可能子集?,r,loops,combinations,iteration,R,Loops,Combinations,Iteration,因此,我知道以下命令将在列表中存储所需长度y的所有可能组合,其中y

因此,我知道以下命令将在列表中存储所需长度y的所有可能组合,其中y 但我不希望它们都存储在一个列表中,因为以后我只会访问它们一次,所以将它们存储在内存中是没有效率的。有没有一种方法,我可以在某种循环中生成每个组合,然后在我完成计算后,它会给我下一个组合?所以基本上我想迭代地生成组合,而不是先存储它们

在伪代码中,我想要的是:

#loop that will generate each possible combination one by one
loop{
  operation that uses combination
}
无需使用线圈搭接或其他方式:

combn(1:4,2)
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,]    1    1    1    2    2    3
# [2,]    2    3    4    3    4    4
计算组合总和的示例:

combn(1:4,2,FUN=sum)
# [1] 3 4 5 5 6 7
具有用户定义函数的示例:

x <- 11:14
combn(1:4,2,FUN=function(i,a) sum(a[i]),a=x)
#[1] 23 24 25 25 26 27
fun <- function(i,a) sum(a[i])
combn(1:4,2,FUN=fun,a=x)

提供更多的代码来展示你想要达到的目标的前后部分,你可能会得到一个好的答案——不管怎样,你可能会得到一个好的答案,但这肯定会有所帮助。有关详细信息,请参阅。^与我所查找的不完全相同for@user2560984怎么会有人知道你在找什么?你没有提供一个好的例子。循环{使用组合的操作}什么也不告诉我们。你看过我贴的链接了吗?在没有更多信息的情况下,罗兰已经回答了你发布的问题。那么,更好地解释你在寻找什么,并显示输入和期望的输出。好的,在你提供的第一段代码中,它一次生成所有组合,但我想一次生成一个,这样可以节省更多内存…好的,但是,对于每个组合,您如何处理函数或操作的结果?储存它们?然后你可以使用第二个命令,这是我回答的重要部分。否则,你需要给出更多的细节,你真正想做什么。
fun <- function(i,a) sum(a[i])
combn(1:4,2,FUN=fun,a=x)