【问题标题】:R: conditional expand.grid functionR:条件expand.grid函数
【发布时间】:2013-09-12 09:40:10
【问题描述】:

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

【问题讨论】:

    标签: r


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2018-06-22
      相关资源
      最近更新 更多