R ошибок в цикле: файл (con, "r") и open.connection (con, "rb") - PullRequest
0 голосов
/ 25 апреля 2018

Я загружаю серию URL, которые являются файлами JSON, в список списка, который будет проанализирован позже.

    baseurl <- "http://zoeken.kvk.nl/Address.ashx?site=handelsregister&partialfields=&q=010"
    pages <- list()

    for(i in 1:99999){
      if(i < 10000){
        message("ignoring page ", i)
      }
      if(i >= 10000){
        message("Retrieving page ", i)
        mydata <- RJSONIO::fromJSON(paste0(baseurl,i), flatten=TRUE) 

        pages[[i+1]] <- mydata$resultatenHR
# adding adjustment 1
        options(timeout = 4000000)
# adding adjustment 2
        if(i %% 100 == 0){Sys.sleep(2)}
        if(i %% 1000 == 0){Sys.sleep(10)}
      }

    }

Однако в неурягические моменты я получаю либо код ошибки:

error in open.connection(con, "rb") : Recv failure: Connection was reset. 

или

Error in file(con, "r") : cannot open the connection

Сначала я попробовал вышеуказанную настройку 1, а затем настройку 2, но проблема продолжает возникать. Если я попытаюсь перезапустить цикл в точке ошибки, он снова будет работать до следующей нерегулярной ошибки.

Как я могу сделать так, чтобы R автоматически перезапускал цикл в точке ошибки?

NB. Я видел другие темы об ошибках в open.connection, но я не понимал данных ответов, или это не относится к моему типу кода, я думаю ...

NB2: Я также пытался использовать пакет jsonlite вместо RJSONIO, но он выдавал те же ошибки в нерегулярные моменты. Спасибо за ваш вклад.

1 Ответ

0 голосов
/ 03 мая 2018

У меня почти точно такая же проблема. Это происходит, особенно когда я пытаюсь загрузить большие наборы данных. Я получаю сообщение об ошибке такого типа: «Ошибка в open.connection (con,« rb »): Ошибка отправки: соединение было сброшено»

  final_results <- list()

  while(i < number){
      query <- paste0(url_start, i)
      json_result <- fromJSON(query)
      final_results[[i]] <- as.data.frame(json_result$records)
      i <- i+1
  }

Кто-нибудь имеет представление о том, что я здесь делаю неправильно?

...