2016-05-31 3 views
1

Я пытаюсь получить данные из матрицы расстояний API карты Google в R. Я пытаюсь получить данные JSON в R. Как загрузить данные JSON в R, так что я смогу проанализировать позже?JSON: данные о расстоянии между картами данных Google в R "Как загрузить данные JSON в R?"

require(rjson) 
url <- "https://maps.googleapis.com/maps/api/distancematrix/jsonunits=imperial&origins=19+East+34th+Street+NewYork+NY+10016&destinations=40.5177433,-74.2749576&mode=transit&language=fr-FR&key=API_KEY_HERE" 
raw.data <- readLines(url, warn = "F") 
rd <- fromJSON(raw.data) 

Я получаю эту ошибку:

Error in fromJSON(raw.data) : unexpected character '<' 

Спасибо за помощь

+0

Вы посмотрели пакет 'httr'? – cory

ответ

0

Просто так получилось, что я написал пакет, googleway, который может помочь:

library(googleway) 

google_distance(origins = "19 East 34th Street NewYork NY 10016", 
       destinations = list(c(40.5177433,-74.2749576)), 
       key = key, 
       mode = "transit", 
       language = "fr") 

$destination_addresses 
[1] "350-356 Lawrie St, Perth Amboy, NJ 08861, États-Unis" 

$origin_addresses 
[1] "19 E 34th St, New York, NY 10016, États-Unis" 

$rows 
elements 
1 51,3 km, 51305, 1 heure 27 min, 5249, OK 

$status 
[1] "OK" 

Аналогично установите simplify = FALSE получить сырье JSON

google_distance(origins = "19 East 34th Street NewYork NY 10016", 
       destinations = list(c(40.5177433,-74.2749576)), 
       key = key, 
       mode = "transit", 
       language = "fr", 
       simplify = FALSE) 


[1] "{"                       
[2] " \"destination_addresses\" : [ \"350-356 Lawrie St, Perth Amboy, NJ 08861, États-Unis\" ]," 
[3] " \"origin_addresses\" : [ \"19 E 34th St, New York, NY 10016, États-Unis\" ],"    
[4] " \"rows\" : ["                    
[5] "  {"                      
[6] "   \"elements\" : ["                 
[7] "   {"                    
[8] "    \"distance\" : {"                
[9] "     \"text\" : \"51,3 km\","             
[10] "     \"value\" : 51305"               
[11] "    },"                   
[12] "    \"duration\" : {"                
[13] "     \"text\" : \"1 heure 27 min\","            
[14] "     \"value\" : 5249"               
[15] "    },"                   
[16] "    \"status\" : \"OK\""               
[17] "   }"                    
[18] "   ]"                     
[19] "  }"                      
[20] " ],"                      
[21] " \"status\" : \"OK\""                  
[22] "}" 

(где simplify == TRUEjsonlite::fromJSON)

0

я понять, как сделать это с помощью JSONLite. Я использовал родной «fromJSON» R, и это вызывало проблемы.

rd <-jsonlite::fromJSON("Google_API_CALL_IN_HERE", simplifyDataFrame = TRUE)

Смежные вопросы