У меня есть вектор 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'
Есть ли способ объединить эти две функции вместе, чтобы получить то, что мне нужно? Есть ли другие способы добиться этого? Спасибо.