R,googleway,通过删除单词匹配地址
R, googleway, matching address by removing word
如果我直接运行下面的代码,它会给我一个错误,因为地址太指定了,但是如果我删除-272,它就可以正常工作。
那么我怎样才能一直自动删除单词直到函数 运行s 并给我地址
library(googleway)
google_geocode(address = "경북 경주시 외동읍 문산공단길 84-272", language = "kr", key = api_key,
如果我在您的问题中使用地址,API 对我有用。但是,使用 your other question 中的地址给我一个 ZERO_RESULTS
return。
我们可以在 gsub()
命令中使用简单的正则表达式删除最终 space 之后地址的最后部分。
library(googleway)
set_key("your_api_key")
## invalid query
add <- "대한민국 경기도 안산시 단원구 성곡동 강촌로 140"
res <- google_geocode(address = add, language = "kr")
res
# $results
# list()
#
# $status
# [1] "ZERO_RESULTS"
## remove the last part after the final space and it works
new_add <- gsub(' \S*$', '', add)
res <- google_geocode(address = new_add, language = "kr")
geocode_coordinates(res)
# lat lng
# 1 37.31737 126.7672
您可以将其转换为一个迭代循环,它将继续删除最后一个 'space' 字符之后的所有内容,并尝试对新地址进行地理编码。
## the curl_proxy argument is optional / specific for this scenario
geocode_iterate <- function(address, curl_proxy) {
continue <- TRUE
iterator <- 1
while (continue) {
print(paste0("attempt ", iterator))
print(address)
iterator <- iterator + 1
res <- google_geocode(address = address, language = "kr", curl_proxy = curl_proxy)
address <- gsub(' \S*$', '', address)
if (res[['status']] == "OK" | length(add) == 0 | grepl(" ", add) == FALSE ){
continue <- FALSE
}
}
return(res)
}
add <- "대한민국 경기도 안산시 단원구 성곡동 강촌로 140"
res <- geocode_iterate(address = add, curl_proxy = curl_proxy)
# [1] "attempt 1"
# [1] "대한민국 경기도 안산시 단원구 성곡동 강촌로 140"
# [1] "attempt 2"
# [1] "대한민국 경기도 안산시 단원구 성곡동 강촌로"
小心确保 while
循环确实可以退出。您不想进入无限循环。
请记住,即使 ZERO_RESULTS
被 return 编辑,该查询仍计入您的每日 API 配额。
如果我直接运行下面的代码,它会给我一个错误,因为地址太指定了,但是如果我删除-272,它就可以正常工作。
那么我怎样才能一直自动删除单词直到函数 运行s 并给我地址
library(googleway)
google_geocode(address = "경북 경주시 외동읍 문산공단길 84-272", language = "kr", key = api_key,
如果我在您的问题中使用地址,API 对我有用。但是,使用 your other question 中的地址给我一个 ZERO_RESULTS
return。
我们可以在 gsub()
命令中使用简单的正则表达式删除最终 space 之后地址的最后部分。
library(googleway)
set_key("your_api_key")
## invalid query
add <- "대한민국 경기도 안산시 단원구 성곡동 강촌로 140"
res <- google_geocode(address = add, language = "kr")
res
# $results
# list()
#
# $status
# [1] "ZERO_RESULTS"
## remove the last part after the final space and it works
new_add <- gsub(' \S*$', '', add)
res <- google_geocode(address = new_add, language = "kr")
geocode_coordinates(res)
# lat lng
# 1 37.31737 126.7672
您可以将其转换为一个迭代循环,它将继续删除最后一个 'space' 字符之后的所有内容,并尝试对新地址进行地理编码。
## the curl_proxy argument is optional / specific for this scenario
geocode_iterate <- function(address, curl_proxy) {
continue <- TRUE
iterator <- 1
while (continue) {
print(paste0("attempt ", iterator))
print(address)
iterator <- iterator + 1
res <- google_geocode(address = address, language = "kr", curl_proxy = curl_proxy)
address <- gsub(' \S*$', '', address)
if (res[['status']] == "OK" | length(add) == 0 | grepl(" ", add) == FALSE ){
continue <- FALSE
}
}
return(res)
}
add <- "대한민국 경기도 안산시 단원구 성곡동 강촌로 140"
res <- geocode_iterate(address = add, curl_proxy = curl_proxy)
# [1] "attempt 1"
# [1] "대한민국 경기도 안산시 단원구 성곡동 강촌로 140"
# [1] "attempt 2"
# [1] "대한민국 경기도 안산시 단원구 성곡동 강촌로"
小心确保 while
循环确实可以退出。您不想进入无限循环。
请记住,即使 ZERO_RESULTS
被 return 编辑,该查询仍计入您的每日 API 配额。