簡體   English   中英

R中反向地理編碼循環的下標超出范圍

[英]Subscript out of bounds for reverse geocoding loop in R

我正在嘗試使用Google api密鑰對數據集進行地址解析。 我設法運行了代碼,並得到了一個小樣本10的期望結果,但是它給出了一個錯誤

Error in rgc$results[[1]] : subscript out of bounds

我設法通過使用以下代碼來集成api密鑰:

` revgx <- mapply(function(latlng, api_key){


url= paste("https://maps.googleapis.com/maps/api/geocode/json?","latlng=",latlng,"&key=",sep="")

rgc <- fromJSON(paste(readLines(url), collapse = ''))

rgc <- rgc$results[[1]]


with(rgc,{rgcdf <<- data.frame(
address = formatted_address
)})
for(k in seq_along(rgc$address_components)){
rgcdf <- cbind(rgcdf, rgc$address_components[[k]]$long_name)
}
names(rgcdf) <- c('address', sapply(rgc$address_components, function(l)     l$types[1]))

# return 'more' output
rgcdf
},
y1$latlng)`

我也嘗試將其與xml合並使用,但無濟於事。 請建議是否需要對代碼進行任何更改。

我測試了您的代碼,它對我有用。 但是您並沒有在測試狀態。 如果latlng不正確,它將返回“零結果”作為狀態(並且不存在rgc $ results)。 這是我測試過的代碼。

rev <- function(latlng, api_key) {

url= url(paste("https://maps.googleapis.com/maps/api/geocode/json?","latlng=",latlng,"&key=",sep=""))
rgc <- fromJSON(paste(readLines(url), collapse = ''))
close(url)

if (rgc["status"] == "OK") {
    rgc <- rgc$results[[1]]
    with(rgc, {
        rgcdf <<- data.frame(address = formatted_address)
    })
    for (k in seq_along(rgc$address_components)) {
        rgcdf <- cbind(rgcdf, rgc$address_components[[k]]$long_name)
    }
    names(rgcdf) <- c("address", sapply(rgc$address_components, function(l) l$types[1]))
    rgcdf["valid_latlong"] <- TRUE
    rgcdf
} else {
    rgcdf <- c(valid_latlong=FALSE)
}
}

我用以下方法進行了測試:

rev("12.9756300,77.6066230")

您是否以這種格式傳遞latlng? 或c(9756300,77.6066230)。 那你要做

latlng <-  gsub(' ','%20', paste(latlng, collapse=","))

另外,您還沒有在共享的代碼段中集成api密鑰。 傳遞api_key來查詢參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM