I am given 31 binary variables, for simplicity let's call them
x_1, ..., x_31.
Each X_i = c(0, 1).
I need to build a tree of options. I have used expand.grid for this but my server throws an error:
Error: cannot allocate vector of size 16.0 Gb.
I am aware that I can sparsify this but how can I deal with the large size?
Using sparsify gives the same error message but with 8 Gb.
Please advise.
Too long for a comment, and @steves asked me to elaborate my comment. Take e.g.
> expand.grid(c(0,1), c(0,1), c(0,1))
Var1 Var2 Var3
1 0 0 0
2 1 0 0
3 0 1 0
4 1 1 0
5 0 0 1
6 1 0 1
7 0 1 1
8 1 1 1
This table has 2^3=8 lines. At line i, this is the binary expansion of i-1:
> f <- function(i) as.integer(rev(intToBits(i)))
> f(6-1) # this gives line 6, with some heading 0's
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
For expand.grid(x1, ..., x31) there are 2^31 lines. The output of f(i) is a vector of 32 digits. So if you modify f by removing the first digit:
f <- function(i) as.integer(rev(intToBits(i)))[-1]
then f(i-1) exactly provides line i of expand.grid(x1, ..., x31).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With