Создание очень большой матрицы комбинаций строк с использованием combn () и пакета bigmemory

У меня есть вектор x из 1344 уникальных строк. Я хочу сгенерировать матрицу, которая дает мне все возможные группы из трех значений, независимо от порядка, и экспортировать ее в CSV.

Я запускаю R на EC2 на экземпляре m1.large с 64-битной Ubuntu. При использовании combn (x, 3) я получаю ошибку нехватки памяти:

Error: cannot allocate vector of size 9.0 Gb

Размер результирующей матрицы составляет C1344,3 = 403 716 544 строки и три столбца, что является транспонированием результата функции combn ().

Я подумал об использовании пакета bigmemory для создания файла big.matrix, чтобы затем я мог назначить результаты функции combn (). Я могу создать заранее выделенную большую матрицу:

library(bigmemory)
x <- as.character(1:1344)
combos <- 403716544
test <- filebacked.big.matrix(nrow = combos, ncol = 3, 
        init = 0, backingfile = "test.matrix")

Но когда я пытаюсь выделить значения test <- combn (x, 3) , я все равно получаю то же самое: Ошибка: не удается выделить вектор размера 9.0 Gb

Я даже пытался принудительно вывести результат combn (x, 3) , но я думаю, что, поскольку функция combn () возвращает ошибку, функция big.matrix тоже не работает.

test <- as.big.matrix(matrix(combn(x, 3)), backingfile = "abc")
Error: cannot allocate vector of size 9.0 Gb
Error in as.big.matrix(matrix(combn(x, 3)), backingfile = "abc") : 
  error in evaluating the argument 'x' in selecting a method for function 'as.big.matrix'

Есть ли способ объединить эти две функции вместе, чтобы получить то, что мне нужно? Есть ли другие способы добиться этого? Спасибо.

6
задан wahalulu 20 December 2010 в 19:47
поделиться