错误fromJSON:意外的字符
问题描述:
我想在河包ggmap
与功能geocode
工作,但我不能运行R文件中的代码示例:错误fromJSON:意外的字符
geocode("houston texas", output = "more")
,其结果是:
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false
Error in fromJSON(paste(lines, collapse = "")) : unexpected character '<'
我不知道它是与fromJSON
的问题,所以我下载了JSON文件(如abcd.json),然后将其导入R:
data <- fromJSON(file="abcd.json")
它的工作原理。
但是当我做:
theurl <- "http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false"
data <- fromJSON(file=theurl)
它返回相同的错误:
Error in fromJSON(paste(lines, collapse = "")) : unexpected character '<'
我Rcurl
都尝试rjson
和RJSONIO
在一起。它以任何方式返回错误。
相关信息:
- RStudio版本1.0.143;
- R版本3.4.0
- macOS Sierra 10.12.6
- 位置:北京。 (可能有一些做互联网禁止谷歌地图API的。)
答
鉴于无效字符是一个<
,你很可能会拉动一些类型的HTML错误消息。直接把数据URL会让你肯定知道:
theurl <- "http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false"
jsondata <- fread(theurl)
cat(jsondata)
我建议您尝试使用HTTPS连接,而不是,它可能是会得到解决的问题
答
(除非它是伟大的防火墙。)我选择使用工具箱JSONlab转向Matlab。
的代码的其余部分的总体思路是几乎一样geocode()
和它的工作。
对于那些位于中国大陆的人员/机构,R包ggmap
中的很多功能不可用(由于防火墙原因)。使用软件包geoChina
来代替您的项目。百度API可在geoChina
。在中国这比谷歌地图API更快。
另外,如果你的数据是相当大的,
result <- apply(data, 1, geocode)
可能会返回错误。建议使用Matlab来处理相对较大的数据。
和你的'geocode()'函数对我来说不会出错。也许你可以试试'library(googleway); google_geocode(“houston texas”,key =“”)' – SymbolixAU
@SymbolixAU他们使用'rjson'实现,它使用'file'而不是'text':https://www.rdocumentation.org/packages/ rjson/versions/0.2.15/topics/fromJSON – miken32
@ miken32 - 啊是 - 好点。 – SymbolixAU