我正在使用报告与knitr
一起使用。在该报告中,我打电话给ggmap::mapdist
。 Google将查询数量限制为每天2500个(其他一些时间限制),如果他们是使用相同的IP制作的(显然它不是计算机或用户,因为同一办公室中的不同计算机赢了&#39 ;工作)。
可以使用ggmap::distQueryCheck()
检查指定日期内剩余的查询数。这个数字可以是2500而仍然会返回错误(例如,当它从同一办公室中的另一台计算机运行时:该计算机仍然有2500个查询要去,但它们& #39; ll稍后失败并出现错误。)
knitr
似乎正在创造一个新的环境" (每次给出编织命令时,我都不知道这里是否使用了正确的词,请随时编辑)(按钮推送,在这种情况下)。这导致distQueryCheck
每次变为2500,即使它稍后会失败(崩溃文档的编织物)。
代码:
library(data.table)
library(ggmap)
distancias <- data.table(origen = sample(c("cali", "medellin", "bogota", "popayan"), 2400, TRUE), destino = sample(c("cartagena", "apartado", "pasto", "buga", "tulua"), 2400, TRUE), distancia = rep(NA, 2400))
if (distancias[is.na(distancia), .N] > 0){
(queriesLeft <- max(0, distQueryCheck()-5))
if (queriesLeft >= 21){
d <- distancias[is.na(distancia), .(origen, destino, distancia, rt)]
setkey(d, "origen")
a <- seq(21, queriesLeft, 20)
for (i in a){
try(d[(i-20): i, distancia2 := mapdist(origen, destino, mode = "driving")$km])
Sys.sleep(1)
}
distancias[d, `:=` (distancia = distancia2), on = "rt", nomatch = 0]
}
}
Sys.sleep
部分是为了避免查询的第二个限制,try
位是为了避免某些最终的网络问题。
如果您将这段代码放在knitr
文档中并重新运行几次,那么&#34;会更新&#34;剩下2500个查询,错误就会到来。
knitr
知道剩下的真实查询小于2500(甚至为零)?可替代地,distQueryCheck
知道我在制作错误之前没有2500?