rOpengov/mpg, цикл по номерам VIN возвращает ошибку против одноразового использования?

Я пытаюсь перебрать fevehicle() функция в пакете mpg

https://github.com/rOpenGov/mpg

Я пытался передать функцию нескольким vinids, даже на всякий случай давая функции 5 секунд отдыха между циклами, но я продолжаю получать ошибку HTTP, даже если в одиночку функция работает нормально. Есть идеи, что это может быть? Ниже приведен код:

#using a loop
vin = c("19UUA86209A000532", "19UUA86239A021598", "19UUA8F20CA037748", "19UUA8F21CA008002", "19UUA8F21CA017878")
for (i in vin) {
  library(mpg)
  print(i)
  print(substr(i, 13, 17))
  q = substr(i, 13, 17)
  z = feVehicle(q)
  Sys.sleep(5)
  z = t(unlist(z))

}

or
#using lapply to see a difference
lapply(vin, feVehicle)

оба выдают следующую ошибку:

[1] "19UUA86209A000532"
[1] "00532"
failed to load HTTP resource
Error in t.default(unlist(z)) : argument is not a matrix
> lapply(vin, feVehicle)
failed to load HTTP resource
failed to load HTTP resource
failed to load HTTP resource
failed to load HTTP resource
failed to load HTTP resource    

Но когда я запускаю его только по одному, он работает нормально: mpg::feVehicle(00532)

Vehicle data:
                                    value
atvType                            Diesel
barrels08              16.616739130434784
barrelsA08                            0.0
c240Dscr                             NULL
c240bDscr                            NULL
charge120                             0.0
charge240                             0.0
charge240b                            0.0
city08                                 21
city08U                               0.0
cityA08                                 0
cityA08U                              0.0
city

1 ответ

Решение

Это потому, что в вашем единственном примере вы дали число, а в цикле вы использовали символ:

#using a loop
vin = c("19UUA86209A000532", "19UUA86239A021598", "19UUA8F20CA037748", "19UUA8F21CA008002", "19UUA8F21CA017878")
for (i in vin) {
  library(mpg)
  print(i)
  print(substr(i, 13, 17))
  q = substr(i, 13, 17)
  z = feVehicle(as.numeric(q))
  Sys.sleep(5)
  z = t(unlist(z))

}
[1] "19UUA86209A000532"
[1] "00532"
[1] "19UUA86239A021598"
[1] "21598"
[1] "19UUA8F20CA037748"
[1] "37748"
[1] "19UUA8F21CA008002"
[1] "08002"
[1] "19UUA8F21CA017878"
[1] "17878"
Другие вопросы по тегам