← R EspañolChapter 11 of 13

Entrada/Salida de Archivos

## Objetivos de Aprendizaje - Leer y escribir archivos CSV - Trabajar con archivos Excel - Manejar archivos de texto - Trabajar con formatos de datos de R ## Directorio de Trabajo ### Obtener/Establecer Directorio ```r # Obtener directorio actual getwd() # Establecer directorio de trabajo setwd("/ruta/al/directorio") # Atajo en RStudio: Sesión -> Establecer Directorio de Trabajo ``` ### Rutas Relativas ```r # Dentro del directorio del proyecto read.csv("datos/archivo.csv") # relativa read.csv("/home/usuario/datos/archivo.csv") # absoluta # Verificar si archivo existe file.exists("datos.csv") ``` ## Archivos CSV ### Leer CSV ```r # R base read.csv("archivo.csv") read.csv("archivo.csv", header = TRUE) read.csv("archivo.csv", sep = ",") # Con cadenas como caracteres (no factores) read.csv("archivo.csv", stringsAsFactors = FALSE) # Omitir filas read.csv("archivo.csv", skip = 2) # Leer primeras N filas read.csv("archivo.csv", nrows = 100) # Cadenas NA read.csv("archivo.csv", na.strings = c("NA", "", "N/A")) ``` ### Leer con readr (tidyverse) ```r library(readr) # Leer CSV read_csv("archivo.csv") # Leer TSV read_tsv("archivo.tsv") # Leer delimitado read_delim("archivo.txt", delim = "|") ``` ### Opciones de readr ```r library(readr) # Especificar tipos de columnas read_csv("archivo.csv", col_types = cols( nombre = col_character(), edad = col_integer(), puntuacion = col_double() )) # Omitir líneas read_csv("archivo.csv", skip = 2) # Sin encabezado read_csv("archivo.csv", col_names = FALSE) # Nombres de columnas personalizados read_csv("archivo.csv", col_names = c("Nombre", "Edad", "Puntuacion")) # Archivo desde URL read_csv("https://ejemplo.com/datos.csv") ``` ### Escribir CSV ```r # R base write.csv(df, "salida.csv") write.csv(df, "salida.csv", row.names = FALSE) # Sobrescribir sin comillas write.csv(df, "salida.csv", quote = FALSE, row.names = FALSE) # Con append write.csv(df, "salida.csv", append = TRUE) ``` ### Escribir con readr ```r library(readr) write_csv(df, "salida.csv") write_tsv(df, "salida.tsv") ``` ## Archivos Excel ### Leer Excel ```r # Instalar paquete readxl install.packages("readxl") library(readxl) # Leer archivo Excel read_excel("archivo.xlsx") read_excel("archivo.xlsx", sheet = 1) read_excel("archivo.xlsx", sheet = "NombreHoja") # Leer todas las hojas excel_sheets("archivo.xlsx") lista_frames <- lapply(excel_sheets("archivo.xlsx"), read_excel, path = "archivo.xlsx") ``` ### Escribir Excel ```r # Instalar paquete writexl install.packages("writexl") library(writexl) write_xlsx(df, "salida.xlsx") # Múltiples dataframes lista_df <- list("Hoja1" = df1, "Hoja2" = df2) write_xlsx(lista_df, "salida.xlsx") ``` ### Paquete openxlsx ```r install.packages("openxlsx") library(openxlsx) # Escribir con formato wb <- createWorkbook() addWorksheet(wb, "Datos") writeData(wb, "Datos", df) saveWorkbook(wb, "salida.xlsx", overwrite = TRUE) # Leer con formato preservado read.xlsx("archivo.xlsx") ``` ## Archivos de Texto ### Leer Texto ```r # Leer archivo completo como líneas lineas <- readLines("archivo.txt") head(lineas, 10) # Leer texto delimitado read.table("archivo.txt", sep = "\t") # scan (lectura rápida de datos numéricos) numeros <- scan("numeros.txt", what = numeric()) ``` ### Escribir Texto ```r # Escribir líneas writeLines(c("Línea 1", "Línea 2", "Línea 3"), "salida.txt") # Agregar líneas writeLines(c("Línea 4"), "salida.txt", append = TRUE) # cat (imprimir a archivo) cat("Hola\n", file = "salida.txt") cat("Mundo\n", file = "salida.txt", append = TRUE) ``` ## Formatos de Datos de R ### Archivos .RData ```r # Guardar espacio de trabajo save.image("mi_sesion.RData") # Guardar objetos específicos save(df, modelo, file = "mis_datos.RData") # Cargar load("mi_sesion.RData") ``` ### Archivos .rds ```r # Guardar objeto único (más eficiente) saveRDS(df, "df.rds") # Cargar df <- readRDS("df.rds") ``` ### save vs saveRDS ```r # save preserva nombres, carga a los mismos nombres save(df, file = "df.RData") load("df.RData") # df aparece en entorno # saveRDS retorna objeto, tú lo asignas df <- readRDS("df.Rds") ``` ## Operaciones con Archivos ### Ver Info de Archivo ```r # Verificar si archivo existe file.exists("archivo.csv") # Info de archivo file.info("archivo.csv") # size isdir mode mtime ctime atime exe # 12345 FALSE "rw-r--" ... # Obtener extensión de archivo tools::file_ext("archivo.csv") # "csv" # Obtener archivo sin extensión tools::file_path_sans_ext("archivo.csv") # "archivo" ``` ### Rutas de Archivos ```r # Construir rutas file.path("dir", "subdir", "archivo.csv") # Normalizar ruta normalizePath("~/archivo.csv") # basename y dirname basename("/ruta/a/archivo.csv") # "archivo.csv" dirname("/ruta/a/archivo.csv") # "/ruta/a" ``` ### Crear/Eliminar Archivos ```r # Crear directorio dir.create("nuevo_directorio") # Crear directorios anidados dir.create("a/b/c", recursive = TRUE) # Copiar archivo file.copy("origen.csv", "destino.csv") # Eliminar archivo file.remove("archivo.csv") # Renombrar archivo file.rename("viejo.csv", "nuevo.csv") ``` ## Interfaces de Conexión ### Leer desde URL ```r # Leer desde URL read.csv("https://ejemplo.com/datos.csv") # Leer desde archivo gzipeado read.csv(gzfile("datos.csv.gz")) # Leer desde portapapeles # Windows read.csv("clipboard") # Mac read.csv(pipe("pbpaste")) ``` ### Leer Archivos Grandes ```r # readr para archivos grandes library(readr) # Barra de progreso read_csv("archivo_grande.csv", progress = TRUE) # Especificar n_max para previsualizar read_csv("archivo_grande.csv", n_max = 1000) ``` ## Mejores Prácticas de Importación de Datos ### Lista de Verificación de Importación ```r # 1. Verificar estructura de archivo primero readLines("archivo.csv", n = 5) # 2. Leer con función apropiada # 3. Verificar estructura con str() # 4. Convertir tipos según sea necesario # 5. Manejar valores faltantes ``` ### Problemas Comunes de Importación ```r # Fila de encabezado extra read.csv("archivo.csv", header = FALSE) # luego eliminar # Delimitador incorrecto read.delim("archivo.txt", sep = "\t") # Problemas de codificación read.csv("archivo.csv", encoding = "UTF-8") # Espacios en blanco al final read.csv("archivo.csv", strip.white = TRUE) ``` ## Guardar Gráficos ### Guardar como Imagen ```r # PNG png("grafico.png", width = 800, height = 600) ggplot(df, aes(x = x, y = y)) + geom_point() dev.off() # JPEG jpeg("grafico.jpg", width = 800, height = 600, quality = 90) # PDF pdf("grafico.pdf", width = 10, height = 8) ``` ### Guardar con ggsave ```r library(ggplot2) p <- ggplot(df, aes(x = x, y = y)) + geom_point() ggsave("grafico.png", p, width = 10, height = 8, dpi = 300) ggsave("grafico.pdf", p, width = 10, height = 8) ggsave("grafico.svg", p) ``` ## Resumen - `getwd()` y `setwd()` gestionan directorio de trabajo - `read.csv()` / `read_csv()` para archivos CSV - Paquete readxl para archivos Excel - `readLines()` para archivos de texto - `saveRDS()` / `readRDS()` para objetos R individuales - `save()` / `load()` para múltiples objetos R - `write.csv()` / `write_csv()` para escribir CSV - `file.exists()` verifica si archivo existe - `file.path()` construye rutas de forma segura - `ggsave()` para guardar gráficos de ggplot2

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →