2017-03-29 10 views
0

私はforループを通してGoogleトレンドデータを取得したいと思います。しかし、エラーが私を後押ししています。他のスタックの質問を検索した後、私はまだそれを動作させることはできません。問題のループ:ループのための私にはループスキップエラーの場合

a2p = for (i in dfurlnames$names1) 
{ 
    x<- paste(i) 
    gtrends_function3(x) 
} 

私は次のエラーを取得する:

Error : res$status_code == 200 is not TRUE 

私は、次のパッケージや関数を使用する:

新しいgtrendsRを取得します。デベロッパーツール:: install_github( 'PMassicotte/gtrendsR')

library(gtrendsR) 

gtrends_function3 <- function(x) 
{ 
    trend1 = gtrends(c(x), geo = c(""), time = "2014-01-05 2014-10-04") 
    trend_df1 = ldply(trend1) 
    return(as.numeric(trend_df1$hits))   
} 

リスト:

dfurlnames$names1 = Ang babaeng humayo, The Bad Batch, Une vie, La La Land,    
The Light Between Oceans, El ciudadano ilustre, Spira Mirabilis, La región 
salvaje, Nocturnal Animals 
+0

本当に確実に知るには十分な情報がありません。コードをステップバイステップで実行するには、手動で 'i < - dfurlnames $ names1 [1]'( 'dfurlnames'の中でそれぞれ繰り返します)、' gtrends(i、...) 'を実行します(optを使用します)。問題の原因となります。ところで、ここでは 'paste'と' c'を使う必要はなく、何もしません。 – r2evans

+0

エラーは、何らかの理由でHTTP要求が失敗したことを示します。あなたの名前に問題があるかもしれません。 – neilfws

+0

R 'for'ループにエラーがある場合、イテレータカウンタの値はグローバル環境にとどまるので、コンソールプロンプトに' i'と入力するだけで、 'dfurlnames $ names1 '問題を引き起こしている。 (その "リスト"は、Rから期待される出力のようには見えません) –

答えて

1

ステータスコード200は、すべてがOKに行ったことを示す、HTTPプロトコルを指します。おそらく、あなたはforループの中で速すぎることを要求しているでしょう。 sleepコマンドを追加します。例:

Sys.sleep(1)

をループに追加すると、処理が遅くなります。あるいは、tryCatchを使用してバイパスしてください:

a2p = for (i in dfurlnames$names1) 
{ 
    tryCatch({ 
     x<- paste(i) 
     gtrends_function3(x) 
    }, error=function(e) {print(e)}) 
} 
+0

エラーコードは、特定の値に対して応答コードが200ではないことを示します。ここでの問題は、その値をスキップしてループを続行したいということです。 – nemja

+0

はい、tryCatchを使用してください。編集済みの回答を参照してください。 – thc

+0

また、forループは常にnullを返します。したがって、変数に代入する必要はありません。 – thc