2016-04-17 3 views
1

Ich habe eine komplexe Liste, die aus einer JSON-Datei erhalten wird.Wie mache ich eine komplexe Liste zu einem Datenrahmen in R?

Die JSON-Datei wurde von einem Map Service API in China erhalten.

Ich suchte die Website, um das Problem zu lösen, aber ich kann keine richtige Lösung für meine Frage finden, also lege ich es in diese Frage und hoffe, es kann gelöst werden.

Wenn ich etwas vermisse, das ich nicht auf der Website gefunden habe, entschuldige ich mich dafür.

Der Code, um die Liste zu erhalten sind wie folgt: `

library(rjson)  
library(RCurl)  
key<-"fd5a14632c36aecd2e759a0cc91a3b4a" 

origin<-"大润发东环店" 

urlorigin <- paste("http://restapi.amap.com/v3/geocode/geo?key=",key,"&address=",origin,"&city=苏州",sep = "")  
dataorigin<-readLines(urlorigin,encoding="UTF-8") 
origininfo<-fromJSON(dataorigin) 
originpoi<-origininfo$geocodes[[1]]$location 
destination<-"苏州大学本部北门"  
urldest <- paste("http://restapi.amap.com/v3/geocode/geo?key=",key,"&address=",destination,"&city=苏州",sep = "")  
datadest<-readLines(urldest,encoding="UTF-8")  
destinfo<-fromJSON(datadest)  
destpoi<-destinfo$geocodes[[1]]$location 

urlpath <- paste("http://restapi.amap.com/v3/direction/driving?key=",key,"&origin=",originpoi,"&destination=",destpoi,   "&originid=&destinationid=&extensions=all&strategy=0&waypoints=&avoidpolygons=&avoidroad=",sep = "") 
pathjson<-paste(readLines(urlpath,encoding = "UTF-8"),collapse = "") 
pathinfo<-fromJSON(pathjson) 

Die pathinfo war die Liste ich endlich bekommen und ich möchte es in einen Datenrahmen konvertieren, die ich arbeiten kann.

Vielen Dank für Ihre Zeit.

Ich komme aus China und mein Englisch ist nicht so gut, ich entschuldige mich dafür.

+1

Was ist die erwartete 'data.frame' Struktur? – hrbrmstr

+0

newDataFrame <- as.data.frame (lapply (newList, rbind)), von [link] (http://stackoverflow.com/questions/36649525/combine-multiple-paired-data-frames-from-two-lists/36649810) – Chris

+0

Bitte geben Sie die erwartete Ausgabe in Ihre Frage ein. –

Antwort

0

Mein Chinesisch ist sehr begrenzt. Aber Ihr Code, um die Daten zu bekommen, funktioniert (mit einigen Warnungen).

pathinfo_df <- as.data.frame(lapply(pathinfo,rbind)) 

pathinfo_df ist jetzt ein Datenrahmen.

summary(pathinfo_df) 
status info infocode count 
1:1 OK:1 10000:1 1:1 
route.origin.Length route.origin.Class route.origin.Mode 
1   -none-  character       
route.destination.Length route.destination.Class route.destination.Mode 
1   -none-  character           
route.taxi_cost.Length route.taxi_cost.Class route.taxi_cost.Mode 
1   -none-  character          
route.paths.Length route.paths.Class route.paths.Mode 
1  -none- list 

Also, es gibt viel zu wählen und zu spielen mit. Lesen Sie bei der Auswahl aus Listen nach. siehe auch:

str(pathinfo_df) 

Dann map es auf Google Earth. Sieht aus wie das Taxi könnte teuer sein. Gute Reise!

+0

Vielen Dank! Dies löst einige meiner Probleme. Aber ich möchte mehr Informationen über diese Liste. – VIC

Verwandte Themen