2

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

4

1 回答 1

4

这是从 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,并确保您的操作系统也允许您拥有尽可能多的连接。

于 2013-06-02T14:31:07.710 回答