Генерация 3.000.000 строк длиной 11 в R - PullRequest
0 голосов
/ 28 октября 2018

Очевидно, если я попробую это:

# first grab the package
install.packages("stringi")
library(stringi)

# and then try to generate some serious dummy data
my_try <- as.vector(sample(1111111111:99999999999,3000000,replace=T))

R скажет NOPE, извините:

Error: cannot allocate vector of size 736.8 Gb

Должен ли я купить больше оперативной памяти *?

* этошутка, но я очень признателен за любую помощь!

РЕДАКТИРОВАТЬ: Желаемый результат представляет собой кадр данных из 20 переменных и 3x10 ^ 6 строк.Некоторые столбцы / переменные должны быть строками, некоторые целые числа.Все длины от 2 до 12.

1 Ответ

0 голосов
/ 28 октября 2018

Ошибка не в выборке из 3 миллионов значений, а в попытке создать популяцию из примерно 90 миллиардов значений 1111111111:99999999999 для выборки.Если вы хотите произвести выборку из этого диапазона, выполните выборку из диапазона 1: 88888888889 и добавьте 11111111110, используя

sample(88888888889, 3000000,replace=TRUE) + 11111111110

. Нет необходимости в as.vector в конце, это уже вектор.

PS Я верю, что в R-devel диапазон 1111111111: 99999999999 будет храниться гораздо более эффективно (в основном только пределы), но я не знаю, будет ли sample() изменен для работы с ним таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...