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 →