我正在使用“R中的数据混搭”学习R,我无法在p上获得示例。 5上班。我使用的代码是:
# Install and load RCurl
install.packages("RCurl")
library("RCurl")
# Install and load the XML package
install.packages("XML")
library("XML")
# Download file and parse it
appid<- 'ucVVQzLV34GQR4ppLwbdW6G8cCSZDoCBqAc53NXsWB3gXkmP1I4epLwMxboV.PfADi_2ubr2A7Cg8FO4Z3xVxxujza2FJ 8M-'
street<-"11408 Bellflower Road"
RCurl<-paste(
"http://local.yahooapis.com/MapsService/V1/geocode?appid=",
appid,
"&street=",
URLencode(street),
"&city=Cleveland&state=OH"
,sep="")
#xmlResult<-xmlTreeParse(requestUrl,isURL=TRUE)
xmlResult<-xmlTreeParse(getURL(RCurl))
#Print the output
str(xmlResult)
但是当我这样做时,我得不到以下结果:
List of 2
$ doc:List of 3
..$ file :List of 2
.. ..$ text : Named list()
.. .. ..- attr(*, "class")= chr [1:5] "XMLTextNode" "XMLNode" "RXMLAbstractNode" "XMLAbstractNode" ...
.. ..$ Message:List of 1
.. .. ..$ text: Named list()
.. .. .. ..- attr(*, "class")= chr [1:5] "XMLTextNode" "XMLNode" "RXMLAbstractNode" "XMLAbstractNode" ...
.. .. ..- attr(*, "class")= chr [1:4] "XMLNode" "RXMLAbstractNode" "XMLAbstractNode" "oldClass"
.. ..- attr(*, "class")= chr [1:4] "XMLNode" "RXMLAbstractNode" "XMLAbstractNode" "oldClass"
..$ version : Named list()
.. ..- attr(*, "class")= chr [1:5] "XMLCommentNode" "XMLNode" "RXMLAbstractNode" "XMLAbstractNode" ...
..$ children:
Error in x$children[[...]] : subscript out of bounds
我做错了什么?
答案 0 :(得分:9)
该API已被弃用。 Here is the current one。试试这个:
library("RCurl")
library("XML")
appid <- 'ucVVQzLV34GQR4ppLwbdW6G8cCSZDoCBqAc53NXsWB3gXkmP1I4epLwMxboV.PfADi_2ubr2A7Cg8FO4Z3xVxxujza2FJ 8M-'
address <- paste("11408+Bellflower+Road", "Cleveland", "OH", sep=",+")
urlRequest <- paste("http://where.yahooapis.com/geocode?q=",
address, appid=appid, sep = "")
doc <- xmlToList(xmlTreeParse(urlRequest)) # Convert to List
str(doc)
它对我有用。虽然,您可能想检查它是否有正确的地址。没有邮政编码吗?您可能还想查看Google's Geocoding API。它不再需要烦人的钥匙了。
List of 7
$ Error : chr "0"
$ ErrorMessage: chr "No error"
$ Locale : chr "us_US"
$ Quality : chr "87"
$ Found : chr "1"
$ Result :List of 29
..$ quality : chr "87"
..$ latitude : chr "41.511326"
..$ longitude : chr "-81.605583"
..$ offsetlat : chr "41.511230"
..$ offsetlon : chr "-81.605453"
..$ radius : chr "2900"
..$ name : NULL
..$ line1 : chr "11408 Bellflower Rd"
..$ line2 : chr "Cleveland, OH 44106"
..$ line3 : NULL
..$ line4 : chr "United States"
..$ house : chr "11408"
..$ street : chr "Bellflower Rd"
..$ xstreet : NULL
..$ unittype : NULL
..$ unit : NULL
..$ postal : chr "44106"
..$ neighborhood: NULL
..$ city : chr "Cleveland"
..$ county : chr "Cuyahoga County"
..$ state : chr "Ohio"
..$ country : chr "United States"
..$ countrycode : chr "US"
..$ statecode : chr "OH"
..$ countycode : NULL
..$ uzip : chr "44106"
..$ hash : chr "BFBDCAB96C2CB175"
..$ woeid : chr "12776632"
..$ woetype : chr "11"
$ .attrs : Named chr "1.0"
..- attr(*, "names")= chr "version"