Impresión de nuevas líneas con print () en R

111

Estoy intentando imprimir un mensaje de varias líneas en R. Por ejemplo,

print("File not supplied.\nUsage: ./program F=filename",quote=0)

Obtengo la salida

File not supplied.\nUsage: ./program F=filename

en lugar de lo deseado

File not supplied.
Usage: ./program F=filename
highBandWidth
fuente

Respuestas:

130

Una alternativa a cat()es writeLines():

> writeLines("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename
>

Una ventaja es que no tiene que acordarse de agregar un "\n"a a la cadena pasada a cat()para obtener una nueva línea después de su mensaje. Por ejemplo, compare lo anterior con la misma cat()salida:

> cat("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename>

y

> cat("File not supplied.\nUsage: ./program F=filename","\n")
File not supplied.
Usage: ./program F=filename
>

La razón por la print()que no hace lo que quiere es que le print()muestra una versión del objeto del nivel R; en este caso, es una cadena de caracteres. Necesita usar otras funciones como cat()y writeLines()para mostrar la cadena. Digo "una versión" porque la precisión puede reducirse en números impresos, y el objeto impreso puede aumentarse con información adicional, por ejemplo.

Gavin Simpson
fuente
25

Puedes hacerlo:

cat("File not supplied.\nUsage: ./program F=filename\n")

Observe que cattiene un returnvalor de NULL.

Shane
fuente
3
Pero no olvide la nueva línea final.
Hadley
+1 @Shane ¡Necesitaba al gato ("\ n") para otra cosa, ya que esto ayudó! Gracias
Alos
7

Usar writeLines también le permite prescindir del carácter de nueva línea "\ n", usando c(). Como en:

writeLines(c("File not supplied.","Usage: ./program F=filename",[additional text for third line]))

Esto es útil si planea escribir un mensaje de varias líneas con entrada combinada fija y variable, como el [texto adicional para la tercera línea] anterior.

usuario5699217
fuente
-1

También puede utilizar una combinación de catypaste0

cat(paste0("File not supplied.\n", "Usage: ./program F=filename"))

Encuentro que esto es más útil cuando se incorporan variables en la impresión. Por ejemplo:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
mikey
fuente