
1. Guardar datos en R formato de tabla
Desde archivos delimitados (.txt, .csv o .xls)
Las funciones más comunes para guardar y leer datos estructurados en R son:
write.table()ywrite.csv()para guardardata.frameomatrixrespetando su estructura.read.table()yread.csv()para leer archivos de texto con datos.
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, ...)
write.csv(...)read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, na.strings = "NA", ...)
read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)Algunos argumentos clave:
file: ruta y nombre del archivo.append: siTRUE, añade al archivo existente.sep: separador de columnas ("," ";" "\t").dec: símbolo decimal (R usa "."; Excel, ",").- na.strings: cómo se representan los valores ausentes (ej. "NA").
Ejemplo 1. Con las funciones write.table() y read.table()
> #creamos los datos que queremos guardar
> x <- data.frame(a = "Hola", b = 2.45)
> # podemos guardar nuestros datos
> write.table(x, file = "Ejemplo1.txt", row.names = FALSE) # guarda un archivo txt
> write.csv(x, file = "Ejemplo1.csv", row.names = FALSE) # guarda un archivo csv
> write.table(x, file = "Ejemplo1.xls", row.names = FALSE) # guarda un archivo excel
> # elimina el objeto "x"
> rm(x)
> # para leer los datos anteriores
> y <- read.table("Ejemplo1.txt", header=TRUE) # lee un archivo txt
> y= read.csv("Ejemplo1.csv",header = TRUE) # lee un archivo csv
> y <- read.table("Ejemplo1.xls", header=TRUE) # lee un archivo xls
> y
a b
1 Hola 2.45
> str(y) # comprueba que los datos se han guardado/leído correctamente y mantienen el formato
'data.frame': 1 obs. of 2 variables:
$ a: Factor w/ 1 level "Hola": 1
$ b: num 2.45En el caso de que los decimales estén determinados por una coma, debemos especificarlo en R (argumento dec=","), ya que R lee los decimales con puntos.
NOTA: Hay que recordar que si trabajas con RStudio tienes la opción de leer datos csv o txt fácilmente desde la barra de herramientas, en la ventana superior derecha "Import dataset".
Desde Excel (.xls o .xlsx)
Para trabajar con archivos de Excel, puedes usar el paquete xlsx:
write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, row.names=TRUE, append=FALSE)read.xlsx(file, sheetIndex, header=TRUE, colClasses=NA)Ejemplo 2. Con las funciones write.xlsx() y read.xlsx()
> # instalamos el paquete "xlsx"
> install.packages("xlsx")
> # activamos la librería "xlsx"
> library(xlsx)
> # guardamos los datos USArrests (vienen instalados por defecto en R) en un archivo Excel (.xlsx)
> write.xlsx(USArrests, file="Ejemplo2.xlsx", sheetName="USA", append=FALSE)
> # agregamos una pestaña con los datos mtcars (también se encuentran disponibles en R)
> write.xlsx(mtcars, file="Ejemplo2.xlsx", sheetName="MTCARS", append=TRUE)
> # leemos los datos generados anteriormente
> D1<-read.xlsx("Ejemplo2.xlsx", sheetName = "USA")
> D2<-read.xlsx2("Ejemplo2.xlsx", sheetName = "MTCARS")NOTA: también existen funciones que exportan los datos en formato SPSS, SAS o Stata.
2. Guardar objetos en formato .RData
Para guardar uno o varios objetos del entorno de R, utiliza:
save()para seleccionar qué guardar.save.image()para guardar todo el entorno.load()para restaurar objetos previamente guardados.
Ejemplo 3. Guardar y cargar objetos con save() y load()
> a=function(x){mean(x)}
> b="hola"
> c=1:5
> d=data.frame(a = 1, b = "a")
> # guarda los objetos en un archivo de datos de R
> save(a,b,c,d,file="Ejemplo.RData”)
> # eliminar los datos del área de trabajo
> rm(a, b, c, d)
> # lee el archivo de datos de R en tu área de trabajo
> load("Ejemplo.RData”)
> a
function(x){mean(x)}
> b
[1] "hola"
> c
[1] 1 2 3 4 5
> d
a b
1 1 a
> str(a)
function (x)
- attr(*, "srcref")=Class 'srcref' atomic [1:8] 1 3 1 22 3 22 1 1
.. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x10471c358>
> str(b)
chr "hola"
> str(c)
int [1:5] 1 2 3 4 5
> str(d)
'data.frame': 1 obs. of 2 variables:
$ a: num 1
$ b: Factor w/ 1 level "a": 13. Guardar objetos con sus metadatos
El formato nativo de R permite guardar objetos con sus metadatos completos mediante funciones como:
dump()para guardar funciones o datos con su estructura interna.sink()para redirigir la salida de consola a un archivo.source()para volver a cargar el código desde un archivo.
Ejemplo 4. Guardar objetos con dump(), sink() y source()
> a=function(x){mean(x)}
> a=function(x){mean(x)}
> b="hola"
> c=1:5
> d=data.frame(a = 1, b = "a")
> # guarda los objetos en un archivo de datos de R
> dump(c("a","b","c","d"),file="Ejemplo.R”)
> # eliminar los datos del área de trabajo
> rm(a, b, c, d)
> # guarda los objetos en un archivo de datos txt
> sink("Datos.txt")
> x <- c(1, 12, 3, 0)
> summary(x) # no muestra los resultados pero los guarda en el fichero txt
> sink()
> # lee el archivo de datos de R en tu área de trabajo
> source("Ejemplo.R")
> a
function(x){mean(x)}
> b
[1] "hola"
> c
[1] 1 2 3 4 5
> d
a b
1 1 a
> str(a)
function (x)
- attr(*, "srcref")=Class 'srcref' atomic [1:8] 2 1 2 20 1 20 2 2
.. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x10b70a8b0>
> str(b)
chr "hola"
> str(c)
int [1:5] 1 2 3 4 5
> str(d)
'data.frame': 1 obs. of 2 variables:
$ a: num 1
$ b: Factor w/ 1 level "a": 1
NOTA: Personalmente prefiero utilizar save/load en lugar de dump/source para trabajar con objetos, porque es más sencilla (dump() no es tan agradable y ocupa más espacio con los metadatos).
4. Guardar gráficos (.jpg, .png, .tiff, .bmp, .pdf)
Puedes guardar gráficos en diversos formatos como .jpg, .png, .tiff, .bmp o .pdf mediante:
jpeg(),png(),bmp(),tiff()para imágenes raster.pdf()para gráficos vectoriales de alta calidad.
da para fuentes adicionales (por defecto Helvetica), "paper" indica el tamaño del papel ("a4", "letter", "legal", "executive", etc.) , "bg" y "fg" para el color de fondo capa, respectivamnte, "pointsize" especifica el tamaño de los puntos (por defecto 12), "colormodel" la configuración de color ("srgb" -por defecto-, "gray" o "cmyk").
Ejemplo 5. Con las funciones jpeg, png, pdf
> # guardar un archivo en formato jpg
> jpeg('Grafico1.jpg') #abre el gráfico con el nombre dado (se guardará en el directorio seleccionado)
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico
> # guardar un archivo en formato png
> png('Grafico1.png') #abre el gráfico con el nombre dado (se guardará en el directorio seleccionado)
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráfico
> # guardar un archivo en formato pdf
> pdf("Grafico1.pdf")
> plot(1:10) #grafica una secuencia de números del 1 al 10
> dev.off() #cierra el gráficoNOTA: también existe la función bmp() y tiff().
¡Saludos!


