【问题标题】:R errors in loop: file(con, "r") and open.connection(con, "rb")循环中的 R 错误:file(con, "r") 和 open.connection(con, "rb")
【发布时间】:2018-10-05 19:06:38
【问题描述】:

我正在将一系列 JSON 文件的 url 下载到列表列表中,以便稍后进行分析。

    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,但它在不规则的时刻给出了相同的错误。 感谢您的意见。

【问题讨论】:

    标签: r loops jsonlite rjsonio


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多