# Guardar resultados en R

Francisco García García (2015-01-21)

### 0. Introducción

### 1. Guardando automáticamente toda la información NO gráfica en un fichero de texto

### 2. Guardando automáticamente toda la información gráfica en una carpeta

### 3. Guardando una base de datos (data.frame o matrix) en un fichero de texto

### 4. Salvamos los objetos generados en la sesión de R en un fichero .RData

### 5. Guardar todos los resultados tras ejecutar un script de R desde la consola

### 6. Enlaces de interés

## 0. Introducción

R genera diversos tipos de resultados: tablas, gráficos…. ¿cómo podemos guardar estos resultados?

Existen varias opciones. Escogeremos aquella que mejor se ajuste a lo que queremos realizar después con los resultados.

## 1. Guardando automáticamente toda la información NO gráfica en un fichero de texto

En ocasiones sólo queremos salvar los resultados no gráficos. En ese caso utilizaremos las función sink y especificaremos un fichero de texto donde se guardarán los resultados obtenidos.

Primero comprobamos cuál es el working directory:

    getwd()

    #> [1] "/home/fgarcia/Desktop/Rthings/06_final/S1_install_objects/teoria"

Es posible cambiar el working directory con la función setwd() Con la función sink decimos que la salida de R será el fichero de texto que indiquemos:

    sink("resultados.txt")
    a <- c(1, 2, 3, 5)
    summary(a)

    #>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
    #>    1.00    1.75    2.50    2.75    3.50    5.00

    print(a)

    #> [1] 1 2 3 5

Si ya hemos terminado de guardar resultados, redirigimos otra vez la salida a la pantalla (como estaba al principio)

    sink()
    print(a)

    #> [1] 1 2 3 5

## 2. Guardando automáticamente toda la información gráfica en una carpeta

Trabajando con Rstudio es posible guardar cada uno de los gráficos que generamos desde la pestaña Plots.

Existen otras opciones para guardar cada uno de los gráficos que generamos en nuestra sesión de R.

Antes de generar el gráfico utilizamos png (u otras como tiff, jpeg,… dependiendo del formato que nos interese).

Tras la función que define el gráfico incluiremos dev.off() para cerrar la ventana gráfica actual

    png(file="grafico1.png", height = 600, width = 600, pointsize = 30)
    a <- c(1, 2, 3, 5)
    boxplot(a, col = "red")
    dev.off()

    #> png
    #>   2

información detallada en ?png

## 3. Guardando una base de datos (data.frame o matrix)

Tras generar una base de datos (data.frame o matrix) es posible guardar ese objeto específico con varias funciones como write.table, write.csv o write.matrix:

    talla <- c(150, 156, 166, 175, 175)
    peso <- c(75, 70, 72, 80, 55)
    provincia <- c("Alicante", "Castellon", "Valencia", "Valencia", "Alicante")
    datos <- as.data.frame(cbind(talla, peso, provincia))
    datos

    #>   talla peso provincia
    #> 1   150   75  Alicante
    #> 2   156   70 Castellon
    #> 3   166   72  Valencia
    #> 4   175   80  Valencia
    #> 5   175   55  Alicante

    write.table(datos, "misdatos.txt", sep = "\t", quote = F, row.names = F)

## 4. Salvamos los objetos generados en la sesión de R en un fichero .RData

Con las funciones save y save.image es posible guardar todos o algunos específicos objetos generados en la sesión de R. Luego los volveremos a cargar en la sesión con la función load. Vemos un ejemplo:

    talla <- c(150, 156, 166, 175, 175)
    peso <- c(75, 70, 72, 80, 55)
    provincia <- c("Alicante", "Castellon", "Valencia", "Valencia", "Alicante")
    datos <- as.data.frame(cbind(talla, peso, provincia))
    datos

    #>   talla peso provincia
    #> 1   150   75  Alicante
    #> 2   156   70 Castellon
    #> 3   166   72  Valencia
    #> 4   175   80  Valencia
    #> 5   175   55  Alicante

Más objetos:

    datos2 <- datos[, 1:2]
    head(datos2)

    #>   talla peso
    #> 1   150   75
    #> 2   156   70
    #> 3   166   72
    #> 4   175   80
    #> 5   175   55

¿Qué objetos tenemos en la sesión?

    ls()

    #> [1] "a"         "base"      "bases"     "datos"     "datos2"    "peso"
    #> [7] "provincia" "talla"

Guardamos todos los objetos en un único fichero específico de R:

    save.image(file = "resultados.RData")

Cargamos todos los objetos en la sesión de R:

    load("resultados.RData")

Si sólo queremos guardar alguno o algunos objetos, se puede salvar con la función save:

    save(datos, datos2, file = "dosresultados.RData")

## 5. Guardar todos los resultados tras ejecutar un script de R desde la consola

Si tenemos acceso a una consola, se podría ejecutar un script con la línea de comando R CMD BATCH, generándose un fichero con todos los resultados:

    #R CMD BATCH script.R

## 6. Enlaces de interés

- Quick-R Web con recursos para trabajar con R.

- r-tutor An R Introduction to Statistics.