2016-04-07 10 views
-3

Problem beim Erstellen einer Makrovariablen innerhalb eines API-Aufrufs in R. Ich versuche, einen Vektor von Postleitzahlen zu durchlaufen und einen iterativen API-Aufruf für diesen Vektor auszuführen. Ziemlich ungewohnt mit der Iteration durch eine R-Liste, die makroskopiert werden muss.Makro mit Iteration über URL

Hier ist mein Code:

# creating a dataframe of 10 sample California zip codes to iterate through from database 
zip_iterations<-sqlQuery(ch,"Select distinct zip from zip_codes where state='CA' limit 10",believeNRows="F") 

# Calling the api to retrieve the JSON 
json_file <- "http://api.openweathermap.org/data/2.5/weather?zip=**'MACRO VECTOR TO ITERATE'**  

Mein Ziel ist es durch die Verwendung eines Makro durch die Liste der 10 Postleitzahlen in dem Datenrahmen zu gehen.

+1

Sie müssen erklären, wie die Form der URL sein soll, denn wie geschrieben, das ist ziemlich unmöglich, Ihnen zu helfen, zu lösen. – Thomas

+0

Danke für die Antwort! Nicht ganz sicher, was du mit der Form der URL meinst, aber es ist ein Wetter-API-Aufruf für JSON nach Postleitzahl. Sagen wir, ich habe die Postleitzahlen 53555 und 76534. Ich möchte etwas wie eine for-Schleife machen. Der Zip = würde normalerweise nur eine gewöhnliche Postleitzahl wie 53555 haben, und ich würde das Wetter für diese Zip bekommen, aber ich will das zu = das Makro, das ich erstelle, so ruft es zuerst 53555 dann 76534 an und durchläuft alle Zeilen im Datenrahmen ... Ich bin mir nicht sicher, wie ich das Makro innerhalb der doppelten Anführungszeichen der URL referenzieren soll, aus der ich den JSON ziehe. – andyn

Antwort

0

R verwendet keine Makros per se, aber es gibt viele alternative Möglichkeiten zu tun, wie es sich anhört. Diese Version wird wieder ein Zeichen Vektor json_file, wobei jeder Eintrag in dem Körper der HTTP-Antwort für diesen Postleitzahl enthält:

library("httr") 
json_file <- character(0) 
urls <- paste0("http://api.openweathermap.org/data/2.5/weather?zip=", zip_iterations) 
for (i in seq_along(urls)) { 
    json_file[i] <- content(GET(urls[i]), as = "text") 
} 

Anschließend können Sie das resultierende Vektor in eine Reihe von R-Listen analysieren unter Verwendung zum Beispiel fromJSON() B.:

library("jsonlite") 
lapply(json_file, fromJSON) 

Das Ergebnis davon wird eine Liste von Listen sein.

+0

Danke Mann, das funktioniert super! – andyn