字符串导致地理编码抛出错误

时间:2018-02-13 01:54:39

标签: r ggmap geocode

运行这行代码

library(ggmap)
geocode(location="Somewhere in Nigeria Winning",source="dsk", output="more")

抛出此错误

Error in vapply(gc$results[[1]]$address_components, function(x) x[[nameToGrab]],  : values must be length 1, but FUN(X[[1]]) result is length 0

有人可以解释为什么会发生这种情况以及我能做些什么来解决这个问题?我知道这似乎是一个奇怪的问题但是这个字符串出现在一组数据中修剪并且似乎破坏了地理编码。

1 个答案:

答案 0 :(得分:0)

只想发布答案,因为我找到了问题,任何人都希望解决方法/想知道该怎么做。问题不在于DSK,而在于ggmap代码本身。如果你运行

geocode(location="not a place in the slightest",source="dsk", output="more")

然后图书馆会优雅地失败并让你回到预期的状态。

geocode failed with status ZERO_RESULTS, location = "not a place in the slightest" 
然而,如果中间的某些字符串像上面的字符串一样,那么优雅地失败,因为DSK返回数据但是不是好的数据,问题是由结果数组中的数据引起的(注意显而易见的原因)你不能使用你需要使用的更多标志来获得这个。

$results[[1]]$address_components[[1]]$long_name
NULL

$results[[1]]$address_components[[1]]$short_name
NULL

lib中的代码,使用" more"将其解析为数据框。国旗扼杀这里

nameToGrab   <- `if`(nameType == "long", "long_name", "short_name")
outputVals  <- vapply(gc$results[[1]]$address_components, function(x)  
x[[nameToGrab]], character(1))
outputNames <- vapply(gc$results[[1]]$address_components, function(x){ if(length(x$types) == 0) return("query")
      x$types[1]
    },
    character(1)
)

因为long_name和short_name都是NULL,vapply将会失败。