2014-02-01 6 views
0

Кто открывает «файлы» и не закрывается?quantmod in R: слишком много открытых файлов

 library(quantmod) 
    nyse.symbols<-stockSymbols("NYSE") 
    nasdaq.symbols<-stockSymbols("NASDAQ") 
    sym<-c(nasdaq.symbols$Symbol,nyse.symbols$Symbol) 
    lapply(sym, function(x) {cat(x,sep="\n");tryCatch(getSymbols(x,from=Sys.Date()-365),error=function(e) e,warning=function(e) e);closeAllConnections()})/ 
    symbols <- sym[sym %in% ls()] 
    for(i in symbols) { 
     wfile <- file(paste("../data/",as.character(i),".txt",sep=""),open="wt") 
     write.table(as.data.frame(get(i)), file=wfile,row.names=TRUE) 
     close(wfile) 
    } 

К сожалению, этот простой код не завершился успешно с ошибкой «слишком много открытых файлов».

Любая помощь здесь? спасибо ...

ответ

0

Вам нужно быть более внимательным к вашим соединениям. Откройте один, используйте его, закройте.

См. help(Connections) - и они используются повсеместно для доступа к файлам, доступа к данным, ... Но нет причин, по которым вы не можете получить доступ к нескольким тысячам символов. Но управлял вашими ресурсами.

+0

Я сделал бы это, поскольку я пытаюсь сделать для доступа к файлу. Я думаю, это происходит в quantmod :: getSymbols() (url-соединения), и я попытался увидеть его внутренности, однако, будучи новичком R, мне не повезло. Вы можете предположить, что это было сделано в getSymbols() тщательно. Что мне здесь не хватает? Кроме того, когда я запрашиваю подключения, кажется, что в моей локальной области нет связей, чтобы закрыть их. Я чувствую, что он настолько глубок в коде квантовой моды. – user3261480

+0

Существуют разные способы получения данных, начиная с кода в пакете tseries. Может быть, попробуйте что-нибудь еще, если вы считаете, что кванмод виноват. –

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