R 函数在成功处理前几个结果后遇到错误

R 函数在成功处理前几个结果后遇到错误,r,R,我有一些数据,我正试图应用一个函数。它转到一个URL,收集JSON数据,然后将其存储到我计算机上的一个文件夹中 我应用以下代码: downloadAndStoreJSONData <- function(jsonLink, provinceFolderLoc, provincia, rowID, groupID, provincesFolderLocationsNames){ print(paste("Processing: ", provincia, "

我有一些数据,我正试图应用一个函数。它转到一个URL,收集JSON数据,然后将其存储到我计算机上的一个文件夹中

我应用以下代码:

downloadAndStoreJSONData <- function(jsonLink, provinceFolderLoc, provincia, rowID, groupID, provincesFolderLocationsNames){
  print(paste("Processing: ", provincia, ".", "Group number: ", groupID, "Row number: ", rowID))
  jsonLink = jsonLink %>% unlist()
  JSON_in = fromJSON(jsonLink)
  write_json(JSON_in, paste(provinceFolderLoc, "/", provincesFolderLocationsNames, ".json", sep = ""))
  Sys.sleep(10)
}

pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), ~downloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6))
回溯:

 Error in open.connection(con, "rb") : 
  OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 
9.
open.connection(con, "rb") 
8.
open(con, "rb") 
7.
parse_con(txt, bigint_as_char) 
6.
parseJSON(txt, bigint_as_char) 
5.
parse_and_simplify(txt = txt, simplifyVector = simplifyVector, 
    simplifyDataFrame = simplifyDataFrame, simplifyMatrix = simplifyMatrix, 
    flatten = flatten, ...) 
4.
fromJSON(jsonLink) 
3.
downloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6) 
2.
.f(.l[[1L]][[i]], .l[[2L]][[i]], .l[[3L]][[i]], .l[[4L]][[i]], 
    .l[[5L]][[i]], .l[[6L]][[i]], ...) 
1.
pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, 
    df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), 
    ~downloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6)) 
为什么它处理数据到某一点,然后就停止了?该网站正在把我从他们的服务器上踢出去吗

当我以
Sys.sleep
为1运行函数时,我很快就出现了这个错误:

[1] "Processing:  Albacete . Group number:  1 Row number:  1"
[1] "Processing:  Albacete . Group number:  2 Row number:  2"
[1] "Processing:  Albacete . Group number:  3 Row number:  3"
[1] "Processing:  Albacete . Group number:  4 Row number:  4"
[1] "Processing:  Albacete . Group number:  5 Row number:  5"
 Error in open.connection(con, "rb") : 
  OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 
我应该增加睡眠时间,并在其中加入一些随机噪音吗

注意:应用该功能需要5-10分钟的处理时间

数据:


df2考虑使用
尽可能/安全地执行此操作

library(purrr)
posdownloadAndStoreJSONData <- possibly(downloadAndStoreJSONData, otherwise = NA_character_)

 out <- pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), ~ posdownloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6))
库(purrr)

posdownloadAndStoreJSONData谢谢!我一定会保留这个。但是,当我自己运行观察时,我没有得到错误,如果我使用
可能
,那么我将丢失我“应该”能够获得的数据。@user113156如果您能够通过一次运行一个观察返回数据,那么我猜这是由于睡眠不足。你能把
Sys.sleep
改大一点吗。可能在第14排之后,需要更长的时间
df2 <- structure(list(index = c("2.1.1", "2.1.2", "2.1.3", "2.1.4", 
"2.1.5", "2.1.6", "2.1.9", "2.1.10", "2.2.1", "2.2.2", "2.2.3", 
"2.2.4", "2.2.5", "2.2.6", "2.2.9", "2.2.10", "2.3.1", "2.3.2", 
"2.3.3", "2.3.4"), title = c("Indicadores de renta media y mediana", 
"Distribución por fuente de ingresos", "Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo/encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80/P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo/encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80/P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad"
), link = c("https://www.ine.es/jaxiT3/Tabla.htm?t=30656&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30813&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30657&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30659&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30660&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30661&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=37678&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30814&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30833&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30834&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30835&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30836&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30837&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30838&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=37733&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30841&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30842&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30843&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30844&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30845&L=0"), provincia = c("Albacete", 
"Albacete", "Albacete", "Albacete", "Albacete", "Albacete", "Albacete", 
"Albacete", "Alicante/Alacant", "Alicante/Alacant", "Alicante/Alacant", 
"Alicante/Alacant", "Alicante/Alacant", "Alicante/Alacant", "Alicante/Alacant", 
"Alicante/Alacant", "Almería", "Almería", "Almería", "Almería"
), provincesFolderLocationsNames = c("Albacete", "Albacete", 
"Albacete", "Albacete", "Albacete", "Albacete", "Albacete", "Albacete", 
"Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", 
"Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", 
"Almería", "Almería", "Almería", "Almería"), provincesFolderLocations = c("/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería", "/home/bscuser/Escritorio/mobility/data/INE/Almería", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería", "/home/bscuser/Escritorio/mobility/data/INE/Almería"
), titleFolderLocationsNames = c("Indicadores de renta media y mediana", 
"Distribución por fuente de ingresos", "Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80_P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80_P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad"
), titleFolderLocations = c("/home/bscuser/Escritorio/mobility/data/INE/Albacete/Indicadores de renta media y mediana", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Distribución por fuente de ingresos", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Índice de Gini y Distribución de la renta P80_P20", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Indicadores demográficos", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Indicadores de renta media y mediana", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Distribución por fuente de ingresos", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Índice de Gini y Distribución de la renta P80_P20", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Indicadores demográficos", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Indicadores de renta media y mediana", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Distribución por fuente de ingresos", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad"
), json_link = list("https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30656?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30813?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30657?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30659?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30660?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30661?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/37678?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30814?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30833?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30834?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30835?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30836?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30837?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30838?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/37733?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30841?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30842?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30843?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30844?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30845?tip=AM&"), 
    rowID = c(1L, 2L, 3L, 4L, 5L, 6L, 9L, 10L, 11L, 12L, 13L, 
    14L, 15L, 16L, 19L, 20L, 21L, 22L, 23L, 24L), groupID = c(1L, 
    2L, 3L, 4L, 5L, 6L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 9L, 
    10L, 1L, 2L, 3L, 4L)), row.names = c(NA, -20L), class = c("tbl_df", 
"tbl", "data.frame"))
library(purrr)
posdownloadAndStoreJSONData <- possibly(downloadAndStoreJSONData, otherwise = NA_character_)

 out <- pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), ~ posdownloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6))