2013-06-02 1 views
2

Я использую пакет quantmod и загружаю данные за несколько недель для каждого символа акции. Существовали около 6400 символов, извлекаемые с помощью функции() stockSymbols, но когда он достиг около 5003 я получилR - Как вы изменяете лимит на количество открытых файлов?

Error in file(fname, "w"): cannot open the connection 
cannot open file 'path to temp file': Too many open files 

Есть работа вокруг или параметр, который может изменить ограничение на количество открытых файлов, что г разрешений?

+0

Я нашел решение на суперпользователя: [Меняющийся максимальное количество открытых файлов] [1] [1]: http://superuser.com/questions/302754/increase-the-maximum-number -of-open-file-descriptors-in-snow-leopard –

ответ

4

То есть предел оболочки/OS, которая передается от ОС до Р. Если вы на Linux, см man bash и искать ulimit: [...]

Edit: И кредит Джошу для напоминания о другом пределе в коде соединения R. Простой тестовый скрипт, как этот

N <- 130 
fvec <- vector(length=N, mode="list") 
for (i in 1:N) { 
    fname <- paste0("/tmp/foo", i, ".tmp") 
    fvec[[i]] <- file(fname, "w") 
} 

Sys.sleep(3) 
for (i in 1:N) { 
    close(fvec[[i]]) 
} 

кажется, умирает, когда N > 128, но делает это штраф до где-то около этого значения. Прямо сейчас, N=125 работал для меня, более высокие значения умирают.

Вкратце, вам нужно организовать свою программу, чтобы она могла работать с меньшим количеством открытых файлов. Кроме того, вам может потребоваться перестроить R с более высоким значением по умолчанию для открытых подключений и убедиться, что ваша ОС позволяет вам иметь столько же.

+0

Я думал, что количество R-соединений было жестко закодировано в источнике R до 128 или около того ... –

+0

Текст сообщения об ошибке предлагает сообщение об ошибке из соединений R слой, но «вызванный» системой, жалующейся. –

+0

Извините, я должен был упомянуть, что я бегу на MacOS X –

Смежные вопросы