R:从knitr

时间:2016-06-28 06:16:47

标签: r knitr ggmap

我正在使用报告与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?

0 个答案:

没有答案