JSON: Google 在 R 中映射距离矩阵数据 "How to download JSON data into R?"
JSON: Google Map Distance Matrix Data in R "How to download JSON data into R?"
我正在尝试从 Google 映射 API 到 R 的距离矩阵中获取数据。我正在尝试将 JSON 数据导入 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 '<'
感谢您的帮助
我通过 JSONLite 弄清楚了如何做到这一点。我使用的是 R 的原生 "fromJSON",这导致了问题。
rd <-jsonlite::fromJSON("Google_API_CALL_IN_HERE", simplifyDataFrame = TRUE)
碰巧我写了一个包,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 == TRUE
使用 jsonlite::fromJSON
)
我正在尝试从 Google 映射 API 到 R 的距离矩阵中获取数据。我正在尝试将 JSON 数据导入 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 '<'
感谢您的帮助
我通过 JSONLite 弄清楚了如何做到这一点。我使用的是 R 的原生 "fromJSON",这导致了问题。
rd <-jsonlite::fromJSON("Google_API_CALL_IN_HERE", simplifyDataFrame = TRUE)
碰巧我写了一个包,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 == TRUE
使用 jsonlite::fromJSON
)