2017-06-10 10 views
0

ジオコードアドレスにgooglewayパッケージを使用して関数を作成しましたが、内部サーバーエラーが500件発生するとクラッシュします。次のように関数である:Rジオコーディング機能で500内部サーバーエラーを処理する

rugeocoder.fun <- function(addr){ 
       require(googleway) 
       output <- vector("list", length=length(addr)) 
       for(i in 1:length(addr)){ 
        output[[i]] <- google_geocode(address=addr[i], key="myapikey", language="ru", simplify=T) 
        print(i) 
       } 
       return(output) 
       } 

(はい、私が代わりに機能内部ループのlapply用いてこれを達成する可能性が知っているが、私はコンソールにカウンタプリントを有するように。)当然

、これは、比較的単純なエラーのために、この時点までのすべての出力を失います。私はその機能を持つために何かできますか?a)出力をその時点まで保存して、そのアドレスで再起動できるようにするか、b)サーバーエラーが消えるまで試し続けます。一時的?)。エラー条件を処理するための

rugeocoder.fun <- function(addr){ 
       require(googleway) 
       output <- vector("list", length=length(addr)) 
       tryCatch({ 
       for(i in 1:length(addr)){ 
        output[[i]] <- google_geocode(address=addr[i], key="myapikey", language="ru", simplify=T) 
        print(i) 

       }},error=function(e) output[[i]] <- "Error: reattempt") 
       return(output) 
       } 
+2

を参照してください 'try'とその類似の機能:?それはtryCatch()でエラーが発生したときのコメントで提案パー – nicola

+1

これは実際には 'googleway'自体の問題ではありませんか?ループ内のエラーを処理するための簡単な 'for-loop'の例だけで、問題や要件を再現することができます。@nicolaの提案に従ってください。 – SymbolixAU

+1

@SymbolixAUいいえ、それはGoogleの問題です。私はtryCatchを使いこなしていますが、エラーメッセージを表示して続行することができますが、まだそれを得るための作業方法を見つけていません500の内部サーバーのエラーが消えるまで、その特定のアドレスを繰り返す。私はそれが新しい質問だと思う。 –

答えて

1

は、私はクラッシュからのループを維持することができました。
関連する問題