我正在使用 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 允许的打开文件数量的限制?
我正在使用 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 允许的打开文件数量的限制?
这是从 OS 传递给 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,并确保您的操作系统也允许您拥有尽可能多的连接。