2017-03-29 3 views
0

Ich möchte google Trenddaten durch eine for-Schleife erhalten. Ein Fehler hält mich jedoch zurück. Nachdem ich andere Stack-Fragen durchsucht habe, kann ich immer noch nicht funktionieren. Die Schleife in Frage:For Schleife überspringen Fehler

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

In meinem for-Schleife bekomme ich folgende Fehlermeldung:

Error : res$status_code == 200 is not TRUE 

ich die folgenden Pakete und Funktion:

die neuen gtrendsR Get; devtools :: 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))   
} 

Die Liste:

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

Es gibt nicht genug Informationen hier, um wirklich sicher zu wissen. Sie können schrittweise durch Ihren Code gehen, indem Sie 'i <- dfurlnames $ names1 [1]' (iterierend über jedes in 'dfurlnames') setzen,' gtrends (i, ...) 'ausführen (benutzen Sie Ihre Optionen) und sehen, welches ist verursacht das Problem. Übrigens: Ihre Verwendung von 'paste' und' c' ist hier unnötig und macht nichts. – r2evans

+0

Der Fehler zeigt an, dass die HTTP-Anfrage aus irgendeinem Grund fehlgeschlagen ist. Könnte sein, dass es ein Problem mit deinen Namen gibt. – neilfws

+0

Wenn es einen Fehler in einer R 'for'-Schleife gibt, bleibt der Wert des Iterator-Zählers in der globalen Umgebung, also sollten Sie einfach' i' an einer Konsolen-Eingabeaufforderung eingeben, die Ihnen sagen soll, welche der 'dfurlnames $ names1 'verursacht das Problem. (Diese "Liste" sieht nicht wie eine Ausgabe aus, die man von R erwarten würde.) –

Antwort

1

Statuscode 200 mit dem HTTP-Protokoll bezeichnet, was darauf hinweist, dass alles in Ordnung ging. Wahrscheinlich fordern Sie Dinge in der for-Schleife zu schnell an. Fügen Sie einen Schlafbefehl, z.B .:

Sys.sleep(1)

in Ihrer for-Schleife Dinge zu verlangsamen. Alternativ verwenden Sie einen tryCatch zum umgehen:

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

Der Fehlercode zeigt an, dass der Antwortcode für einen bestimmten Wert NICHT 200 ist. Das Problem hier ist, dass ich diesen Wert überspringen und mit der Schleife fortfahren möchte. – nemja

+0

Ja, also benutze einen tryCatch. Siehe bearbeitete Antwort. – thc

+0

Außerdem gibt eine for-Schleife immer null zurück, so dass es keinen Sinn hat, sie einer Variablen zuzuordnen. – thc