4

我正在使用“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

我究竟做错了什么?

4

1 回答 1

9

该 API 已被弃用。这是当前的。试试这个:

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 的 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"
于 2012-04-08T03:23:32.013 回答