R:条件expand.grid函数

时间:2013-09-12 09:40:11

标签: r

我想找到符合特定条件的矢量元素的所有组合。函数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,)

1 个答案:

答案 0 :(得分:1)

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

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

既然我已经说过了所有这一切,那么有人会发布一个链接到一个确实如此的包: - (

相关问题