2

私は quantmod パッケージを使用しており、銘柄ごとに 1 週​​間分のデータを読み込んでいました。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 に引き継がれるシェル/OS の制限です。Linux を使用している場合は、man bash[ ulimit...]

編集: Rの接続コードの別の制限を思い出させてくれたJoshに感謝します。このような単純なテスト スクリプト

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 を再構築し、OS でできるだけ多くの接続を許可するようにする必要がある場合があります。

于 2013-06-02T14:31:07.710 に答える