【问题标题】:Error: (list) object cannot be coerced to type 'integer'错误:(列表)对象不能被强制输入“整数”
【发布时间】:2014-08-01 15:22:30
【问题描述】:

当我尝试在循环中运行函数 route() 时,我在 R 中遇到此错误:

错误:(列表)对象不能被强制输入“整数”

该函数位于“ggmap”包中。它需要两个字符串作为参数,并在谷歌上搜索它们之间的方向。它返回一个数据框,其中包含有关路线的信息,包括距离、分钟、坐标等。

我有一个包含许多代表邮政编码的字符串的向量,我在这些邮政编码的循环中使用了这个 route() 函数。前 40 次左右的搜索运行正常,但随后崩溃并出现上述错误。

df <- as.data.frame(read.csv("df.csv", sep=","))

for (i in df$post_code){
  route(i,'NE29 8NH', structure = 'route', mode = 'driving')
}

我用邮政编码检查了向量,没有缺失值或其他异常。请帮我解决这个问题。

【问题讨论】:

  • 我们可以看看一些数据吗?
  • 这是邮政编码向量的结构:chr [1:2102] "NE48 2SG" "NE43 7QP" "NE46 3NB" "NE46 3AL" "NE46 2BD" "NE46 2EZ" ​​"NE49 9AJ " "NE42 6JU" "NE46 1PU" "NE45 5PJ" ...
  • route help 说from = "name of origin addresses in a data frame (vector accepted)",那你为什么要使用循环呢?
  • 因为如果我尝试将向量作为参数,它只会计算向量的第一个值的方向(即第一个邮政编码)
  • 我刚刚注意到的奇怪的事情是,每次我尝试运行循环时,它都会在不同数量的搜索后失败。也许这与谷歌可能会阻止访问以一次发送太多请求有关?但是,为什么会出现这个错误?

标签: r ggmap


【解决方案1】:

我认为问题与 google maps 速率限制有关,只需输入请求 URL 并刷新浏览器几次,您将收到以下消息:

{
   "error_message" : "You have exceeded your rate-limit for this API.",
   "routes" : [],
   "status" : "OVER_QUERY_LIMIT"
}

ggmaps 尝试解析 json 响应,但响应没有任何信息。我建议使用 Sys.sleep(x), x 强制延迟循环

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 2016-09-30
    • 2020-11-30
    • 2016-05-24
    • 2016-09-12
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多