我正在使用quantmod包,并为每个股票代码加载了数周的数据。 stockSymbols()函数检索到大约6400个符号,但当它达到5003左右时,我得到了
Error in file(fname, "w"): cannot open the connection
cannot open file 'path to temp file': Too many open files
是否有解决办法或设置可以更改R允许的打开文件数限制?
答案 0 :(得分:4)
这是从操作系统传递给R的shell / OS限制。
如果您使用的是Linux,请参阅man bash
并查找ulimit
:[...]
编辑:并感谢Josh提醒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以进行打开连接,并确保您的操作系统允许您拥有尽可能多的R。