Stampa di nuove righe con print () in R


111

Sto cercando di stampare un messaggio su più righe in R. Ad esempio,

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

Ottengo l'output

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

invece del desiderato

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

Risposte:


130

Un'alternativa a cat()è writeLines():

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

Un vantaggio è che non devi ricordarti di aggiungere "\n"a alla stringa passata cat()per ottenere una nuova riga dopo il tuo messaggio. Ad esempio, confronta quanto sopra con lo stesso cat()output:

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

e

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

Il motivo per cui print()non fa quello che vuoi è che print()ti mostra una versione dell'oggetto dal livello R - in questo caso è una stringa di caratteri. È necessario utilizzare altre funzioni come cat()e writeLines()per visualizzare la stringa. Dico "una versione" perché la precisione può essere ridotta nei valori numerici stampati e l'oggetto stampato può essere aumentato con informazioni extra, per esempio.


25

Puoi farlo:

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

Notare che catha un returnvalore di NULL.


3
Ma non dimenticare la nuova riga finale.
Hadley

+1 @Shane Avevo bisogno del gatto ("\ n") per qualcos'altro vedere questo mi ha aiutato! Grazie
Alos

7

L'uso di writeLines consente anche di fare a meno del carattere di nuova riga "\ n", utilizzando c(). Come in:

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

Ciò è utile se si prevede di scrivere un messaggio su più righe con input combinato fisso e variabile, come il [testo aggiuntivo per la terza riga] sopra.


-1

Puoi anche usare una combinazione di catepaste0

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

Trovo che questo sia più utile quando si incorporano variabili nella stampa. Per esempio:

file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.