【发布时间】:2018-05-26 00:35:50
【问题描述】:
这个问题可能太笼统了,但我觉得它在我的工作中一次又一次地出现,因此可能会引起其他人的兴趣。
假设我想创建一个基于扩展网格的数据表(或矩阵)。
library(data.table)
Vmat1 = data.table(expand.grid(c(list(d = 1:5, w = 1:(3)))))
但是,假设如果我这样做,这将导致真实功率集的内存错误。但是,我想施加一些限制,例如:
如果w>1,那么它一定是d
这会给出较小的最终集,不会导致内存错误:
Vmat1[w>1 & d<3 | w==1]
d w
1: 1 1
2: 2 1
3: 3 1
4: 4 1
5: 5 1
6: 1 2
7: 2 2
8: 1 3
9: 2 3
我的问题是,是否可以在创建网格时预先施加限制?构建完整的电源组然后调节和减少的成本太高。
【问题讨论】:
-
为 expand.grid 拆分成组?
-
stackoverflow.com/q/50400696/3358272 的可能重复项。 (实际上是一回事……懒惰地扩展网格,例如 python2 的
xrange),带有约束。)
标签: r matrix data.table bigdata powerset