我有一个在循环中使用tmaptools :: geocode_OSM()的脚本。
这里说循环:
for(i in 1:nrow(origAddress)) {
if(origAddress[i,'lon'] == ""){
print(
paste(
"Working on geocoding:"
, origAddress$PartialAddress[i]
)
)
result <- geocode_OSM(
origAddress$PartialAddress[i]
, return.first.only = T
, as.data.frame = T
)
origAddress$lon[i] <- as.numeric(result[3])
origAddress$lat[i] <- as.numeric(result[2])
} else {
print("Trying next record...")
}
}
此循环可以正常工作,直到由于某种原因而导致geocode_OSM()$query
返回NA
的循环中断。我正在使用的示例是一个拼写错误的地址,其中城镇拼写错误。循环结果返回:
Error in do.call(rbind, output3) : second argument must be a list
In addition: Warning message:
In FUN(X[[i]], ...) : No results found for "LAKE RONKONKAMA, NY, 11779".
在RONKONKAMA湖上方实际上是拼写为LAKE RONKONKOMA。当我在循环外运行以下命令时,我得到:
tst.rslt <- geocode_OSM(
origAddress$PartialAddress["LAKE RONKONKAMA, NY, 11779"]
, return.first.only = T
, as.data.frame = T
)
print(tst.rslt)
query lat lon lat_min lat_max lon_min lon_max
1 <NA> 64.57315 11.52804 57.75901 71.38488 4.087527 31.76149