R - 如何更改打开文件数量的限制?

时间:2013-06-02 14:25:36

标签: r

我正在使用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允许的打开文件数限制?

1 个答案:

答案 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。