現在、R には約 2000 回ループするスクリプト (ループ) があり、ループごとに、URL リンクとデータを変数に入れる関数をfor
使用してデータベースからデータをクエリします。read.csv
私の問題は、少量のデータ (約 10000 行) をクエリすると、ループごとに約 12 秒かかることです。しかし、今ではループごとに約 50000 行のデータをクエリする必要があり、クエリ時間はループごとに 50 秒程度にかなり増加します。そして、これは私にとっては問題ありませんが、サーバーがデータを送信するのに時間がかかり(約75〜90秒)、明らかに接続がタイムアウトし、次のエラーが発生することに気付くことがあります。
ファイルのエラー (file, "rt") : 接続を開くことができません
さらに: 警告メッセージ:
ファイル (ファイル、"rt") 内: 開けません: HTTP ステータスは '0 (nil)' でした
またはこれ:
ファイルのエラー (file, "rt") : 接続を開くことができません
さらに: 警告メッセージ:
In file(file, "rt") : InternetOpenUrl が失敗しました:「操作がタイムアウトしました」
毎回同じ警告が表示されるわけではありません。これら 2 つの間で変化します。
今、私が望むのは、これが発生したときにプログラムが停止するのを避けるか、単にこのタイムアウトエラーを防ぎ、R にデータを待つように指示することです。可能な解決策として、スクリプトの開始時にこれらの設定を試しましたが、引き続き発生します。
options(timeout=190)
setInternet2(use=NA)
setInternet2(use=FALSE)
setInternet2(use=NA)
他の提案や回避策はありますか? これが発生したときに次のループにスキップし、このエラーが発生した回数のループ番号を変数に格納して、最後に再度クエリできるようにすることができますがi
、接続エラーのためにスキップされたループ内のものに対してのみです? もちろん、理想的な解決策は、このエラーを回避することです。