La función write() en R: escribir en un archivo de texto
write() vuelca el contenido de un vector en un archivo de texto plano. Es más básica que write.csv(): no entiende de tablas ni de columnas, solo escribe valores.
Ejemplo simple
numeros <- c(10, 20, 30, 40, 50)
write(numeros, "numeros.txt")
Si abres el archivo verás algo que sorprende la primera vez:
10 20 30 40 50
Todo en una línea. Es porque write() escribe 5 valores por línea por defecto, una herencia de cuando se usaba para matrices.
Para que cada valor vaya en su línea, hay que decírselo:
write(numeros, "numeros.txt", ncolumns = 1)
Ese ncolumns = 1 es casi siempre lo que quieres.
Cuándo usar cada función
Aquí está la pregunta útil, porque en R hay varias formas de escribir un archivo:
write.csv()→ cuando tienes un data frame. Es lo habitual.write()→ cuando tienes un vector suelto: una lista de ids, unos nombres, unos resultados.writeLines()→ cuando tienes texto y quieres controlar exactamente cada línea.cat()→ cuando quieres construir el texto tú mismo, con formato libre.
Para texto, writeLines() suele ser mejor opción que write(), porque no tiene esa manía de las cinco columnas:
lineas <- c("Informe de ventas", "Generado automáticamente", "---")
writeLines(lineas, "cabecera.txt")
Ejemplo algo más completo: un log sencillo
Un uso real de cat(), que es la versión flexible de todo esto: ir dejando registro de lo que hace tu script.
registrar <- function(mensaje, archivo = "log.txt") {
linea <- paste(Sys.time(), "-", mensaje)
cat(linea, "\n", file = archivo, append = TRUE)
}
registrar("Datos cargados")
registrar("Análisis terminado")
La clave es append = TRUE: sin él, cada llamada machacaría el archivo anterior. Con él, va añadiendo líneas al final.
Si el proceso lo lanzas de forma automática y algún día falla, ese archivo te dirá por dónde iba.