循环中的R错误:文件(con,“r”)和open.connection(con,“rb”)

时间:2018-04-25 10:31:41

标签: r loops jsonlite rjsonio

我正在将一系列作为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会自动在错误点重启循环?

注意我在open.connection中看到了其他有关错误的主题,但我不明白给出的答案,或者它不适用于我认为的代码类型......

NB2:我也尝试使用jsonlite包而不是RJSONIO,但它在不规则时刻会出现相同的错误。 感谢您的投入。

1 个答案:

答案 0 :(得分:0)

我几乎完全一样的问题。当我尝试下载更大的数据集时,尤其会发生这种情况。我收到这样的错误消息:“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
  }

有谁知道我在这里做错了什么?