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.