[英]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.