Intercambio de datos

Para leer un fichero simple (por ejemplo en formato CSV), con los datos separados por espacios en blanco, tabuladores o saltos de línea, se utiliza la instrucción read.table. Hay que tener especial cuidado con el formato del archivo, por ejmplo, si el carácter decimal no es un punto sino una coma, deberemos usar dec = “,”:

fichero.df <- read.table("c:/dir/mi.fichero", header = TRUE, sep = "", comment.char = "")  # ruta para Windows

Se pueden saltar líneas (skip) o leer un número fijo de líneas (nrows). Hay funciones especializadas para otros archivos (ej., read.csv) pero son casos específicos de read.table.

Ejemplo 1. Guardar y leer datos

Resulta muy importante poder guardar datos, funciones, etc., para ser usados en otras sesiones de R. Esos datos así guardados pueden compartirse con otros usuarios e incluso utilizarse en distintos sistemas operativos. Los guardaremos con save() y los leeremos con load().

x <- runif(20)
y <- list(a = 1, b = TRUE, c = "patata")
save(x, y, file = "xy.RData")
rm(x, y)
load("xy.RData")

Podemos guardar todos los objetos con

save.image()  # guardado como '.RData'
save.image(file = "nombre.RData")

El fichero .RData (sin nombre antes del punto) se carga al iniciarse R. R y muchos otros paquetes incorporan archivos con datos y se cargan con load("nombre.RData"). Además la instrucción data permite cargar archivos de las librerías disponibles.

data()  # muestra todos los archivos
data(iris)
data(iris, package = "base")  # equivalente
`?`(iris)

Ejemplo 2. Tengo mis datos en Excel, ¿qué hago?

Lo mejor es exportar los datos desde Excel a un archivo de texto separado por tabuladores (CSV). Cuidado con las últimas columnas y missing data (Excel elimina los trailing tabs). Dos formas de minimizar problemas: (i) usar NA para missing; (ii) poner una última columna con datos arbitrarios (ej., una columna llena de 2s). Cuidado también con líneas extra al final del fichero. Salvamos como texto (sólo salvamos una de las hojas).

Si este método no te convence echa un vistazo al paquete xlsx

Ejemplo 3. Exportar los resultados/datos de nuestro estudio

Lo más sencillo es exportar una matriz (es necesario transponer la matriz).

write(t(x), file = "c:/dir/data.txt", ncolumns = n, append = FALSE)

También podemos exportar un data.frame

write.table(my.data.frame, file = "mi.output.txt", sep = "", row.names = FALSE, 
    col.names = TRUE)

Si lo que quieres es abrirlo más tarde en Excel, mejor expórtalo a un fichero CSV (importable a Excel)

write.table(x, file = "foo.csv", sep = ",", col.names = NA)