Имеете дело с очень большим расширением .grid? - PullRequest
0 голосов
/ 03 июня 2018

Мне дано 31 двоичных переменных, для простоты давайте назовем их x_1, ..., x_31.

Каждый X_i = c(0, 1).

Мне нужно построить дерево опций.Я использовал для этого файл expand.grid, но мой сервер выдает ошибку:

Ошибка: невозможно выделить вектор размером 16,0 ГБ.

Я знаю, что могу sparsify это, но как мне справиться с большим размером?

Использование sparsify выдает то же сообщение об ошибке, но с 8 Gb.

Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 03 июня 2018

Слишком долго для комментария, и @steves попросил меня разработать мой комментарий.Возьмем, к примеру,

> 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

В этой таблице 2^3=8 строк.В строке i это двоичное расширение 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

Для expand.grid(x1, ..., x31) имеется 2^31 строк.Выход f(i) представляет собой вектор из 32 цифр.Поэтому, если вы измените f, удалив первую цифру:

f <- function(i) as.integer(rev(intToBits(i)))[-1]

, тогда f(i-1) точно предоставит строку i из expand.grid(x1, ..., x31).

...