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