【发布时间】:2013-07-15 00:53:15
【问题描述】:
所以我目前正在使用以下代码来生成我的组合:
combn(x,y)
但问题是函数存储了所有可能的组合。我不想存储它们,我只想像循环或其他东西一样生产它们。这对我的程序来说会更有效率。有没有办法通过 for 循环生成组合而不是全部存储?
我知道我在这里问了一个类似的问题: How do I find all possible subsets of a set iteratively in R?
但在那个解决方案中,组合仍然被存储......
这里有更多细节:
假设我想找到 4 选择 2。combn(4,2) 基本上会存储以下内容: ((1,4),(1,3),(1,2),(2,4),(2,3)(3,4))
我想要的是这个:
loop{
produces one combination at a time
}
【问题讨论】:
-
是的,但在那个答案中,组合仍在存储中
-
什么意思?它们是如何存储的?
-
我认为 OP 在这里想要的是一个函数,它不仅输出所有可能的组合,而且需要一个额外的变量,比如
i,它得到第 i 个值combn(x,y)。虽然function(x,y,i)combn(x,y)[i]在技术上可行,但效率不高。 -
不确定这是否适用,但通常 data.table 有助于提高性能:stackoverflow.com/questions/16919998/…
-
也许你在rosettacode找到一个算法
标签: r loops iteration combinations