9

我想找到与特定条件匹配的向量元素的所有组合。函数 expand.grid 返回所有可能的组合而不检查特定条件。使用 expand.grid 函数后可以测试特定条件,但在某些情况下,可能的组合数量太大而无法使用 expand.grid 生成它们。因此,是否有一个功能可以让我在生成所有可能的组合时检查条件。

这是问题的简化版本:

A <- seq.int(12, from=0, by=1)*15
B <- seq.int(27, from=0, by=1)*23
C <- seq.int(18, from=0, by=1)*18
D <- seq.int(33, from=0, by=1)*10

out<-expand.grid(A,B,C,D) #out is a dataframe with 235144 x 4 as dimensions
idx<-which(rowSums(out)<=400 & rowSums(out)>=300) #Only a small fraction of 'out' is needed
results <- out(idx,)
4

1 回答 1

1

一句话,没有。毕竟,如果您先验地知道哪些组合是可取的/不可取的,您可以将它们排除在扩展之外,例如 expand.grid(A[A<20],B[B<15],...). 在一般情况下,我假设这是你真正的问题,你没有简单的方法来排除部分输入向量。

您可能只想编写一个多级循环,依次测试每个组合并保存或拒绝它。这会很慢(同样,除非你想出一些聪明的算法来预测所有为真或假的区域)。因此,从长远来看,您最好使用一些 R 包来划分大型计算(和数据集)以避免超出内存限制。

既然我已经说了这么多,有人会发布一个链接到一个包的链接:-(

于 2013-09-12T12:13:01.673 回答