2013-06-02 51 views
2

我正在使用quantmod軟件包,併爲每個股票代碼加載了數週的數據。大約有由stockSymbols()函數來獲取6400個的符號,但是當它圍繞5003達到我R - 如何更改打開文件數量的限制?

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

有一個變通或可改變的是R允許打開的文件數限制的設置?

+0

我發現超級用戶的解決方案:[改變打開的文件最大數量] [1] [1]:http://superuser.com/questions/302754/increase-the-maximum-number打開文件描述符在雪豹 –

回答

4

這是從操作系統傳給R. 如果你是在Linux上,看到man bash,尋找ulimit殼/ OS限制:[...]

編輯:和信貸喬希提醒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上運行 –

相關問題