es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: se esperaba “<" al leer archivos .xlsx y .xls en R con el paquete readxl.

Estoy leyendo un conjunto de archivos de Excel en R utilizando el paquete readxl y un bucle for. Aquí está mi código simplificado:

filelist = list.files(input.dir) # obtener lista de archivos de Excel

for (i in seq_along(filelist)){
  read_excel(filelist[i], col_names=F)
}

Puedo leer algunos archivos sin problemas. Otros se leen, pero el resultado es una tabla vacía (0x0). Otros archivos detienen el bucle y generan el mensaje de error:

Error: expected <```

Puedo resolver el problema abriendo un archivo problemático, haciendo una edición menor y guardando el archivo. Sin embargo, no es factible hacer esto para cada archivo, tengo más de 1,000 en total. Puede encontrar un subconjunto de mis archivos de Excel aquí. Como referencia, “AMEX1-61-2020-PH.xlsx” es uno de los archivos problemáticos que genera el mensaje de error. Estoy utilizando la versión 1.3.1 de readxl y la versión 4.1.1 de R. ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se debe a algún problema de formato o codificación en los archivos de Excel problemáticos. Una solución podría ser intentar usar el paquete openxlsx en lugar de readxl, y también especificar la codificación de manera explícita de la siguiente manera:

    library(openxlsx)
    
    for (i in seq_along(filelist)){
      read.xlsx(filelist[i], startRow = 1, colNames = FALSE, detectDates=TRUE, encoding = "UTF-8")
    }
    

    Aquí, el parámetro startRow especifica desde qué fila comenzar a leer los datos (el valor predeterminado es 1), y colNames especifica si la primera fila contiene nombres de columna (el valor predeterminado es TRUE). El parámetro detectDates se establece en TRUE en caso de que alguna columna de fechas se reconozca automáticamente como fechas. El parámetro encoding se establece en “UTF-8” para uniformidad de codificación.

    Otra opción podría ser intentar convertir los archivos problemáticos a un formato diferente, como CSV, antes de leerlos en R. Esto se puede hacer utilizando Excel o cualquier otro software de hojas de cálculo.

    “`{warning}
    Como modelo de lenguaje de IA, no puedo acceder a tus archivos en el enlace de Google Drive ya que no tengo la autorización requerida. En consecuencia, no pude determinar si las soluciones propuestas realmente funcionan para ti.

Comments are closed.