2010-11-01 14 views
85

Sto provando a stampare un messaggio più righe in R. Per esempio,nuove righe di stampa con print() in R

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

ottengo l'uscita

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

invece del desiderato

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

risposta

92

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

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

Un vantaggio è che non c'è bisogno di ricordarsi di aggiungere un "\n" per la stringa passata a cat() per ottenere un ritorno a capo dopo il tuo messaggio. Per esempio. confrontare quanto sopra per la stessa cat() uscita:

> 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 print() non fa quello che si vuole è che print() si 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 numeri stampati, e l'oggetto stampato può essere aumentato con informazioni extra, per esempio.

16

È possibile fare questo:

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

Si noti che cat ha un valore returnNULL.

+3

Ma non dimenticare la nuova riga finale. – hadley

+0

+1 @Shane Avevo bisogno del gatto ("\ n") per qualcos'altro che vedeva questo aiutato! Grazie – Alos

5

L'uso di writeLines consente anche di rinunciare al carattere di carattere \ n "newline, utilizzando c(). Come in:

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

Questo è utile se si ha intenzione di scrivere un messaggio più righe di un ambiente adibito fissi e variabili di input, come ad esempio il [testo aggiuntivo per terza linea] sopra.

Problemi correlati