错误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都尝试rjsonRJSONIO在一起。它以任何方式返回错误。


相关信息:

  1. RStudio版本1.0.143;
  2. R版本3.4.0
  3. macOS Sierra 10.12.6
  4. 位置:北京。 (可能有一些做互联网禁止谷歌地图API的。)
+0

和你的'geocode()'函数对我来说不会出错。也许你可以试试'library(googleway); google_geocode(“houston texas”,key =“”)' – SymbolixAU

+0

@SymbolixAU他们使用'rjson'实现,它使用'file'而不是'text':https://www.rdocumentation.org/packages/ rjson/versions/0.2.15/topics/fromJSON – miken32

+0

@ miken32 - 啊是 - 好点。 – SymbolixAU

鉴于无效字符是一个<,你很可能会拉动一些类型的HTML错误消息。直接把数据URL会让你肯定知道:

theurl <- "http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false" 
jsondata <- fread(theurl) 
cat(jsondata) 

我建议您尝试使用HTTPS连接,而不是,它可能是会得到解决的问题

(除非它是伟大的防火墙。)我选择使用工具箱JSONlab转向Matlab。

http://cn.mathworks.com/matlabcentral/fileexchange/33381-jsonlab--a-toolbox-to-encode-decode-json-files

的代码的其余部分的总体思路是几乎一样geocode()

和它的工作。

对于那些位于*的人员/机构,R包ggmap中的很多功能不可用(由于防火墙原因)。使用软件包geoChina来代替您的项目。百度API可在geoChina。在中国这比谷歌地图API更快。

另外,如果你的数据是相当大的,

result <- apply(data, 1, geocode) 

可能会返回错误。建议使用Matlab来处理相对较大的数据。