Come si stampa a stderr
in R
?Come si stampa su stderr in R?
Ciò sarebbe particolarmente utile per gli script scritti in Rscript
.
Come si stampa a stderr
in R
?Come si stampa su stderr in R?
Ciò sarebbe particolarmente utile per gli script scritti in Rscript
.
In realtà le seguenti opere per me:
write("prints to stderr", stderr())
write("prints to stdout", stdout())
È possibile configurare la funzione di stampa per stampare su stderr?
No, ma dove lo standard output va è controllata da lavabo(), in modo da poter ottenere lo stesso effetto. R internamente non ha idea di quale output provenga da print() (che non è solo una funzione ma centinaia di metodi).
Ecco una versione più flessibile per il debug/uso verbose in rscript. Non solo stampa a stderr
come chiedete, ma consente anche di passare un numero variabile di argomenti, tipi ecc. Come fa printf
.
v <- function(...) cat(sprintf(...), sep='', file=stderr())
Ora si possono fare cose come:
v("name: %s age: %d\n", name, age)
ecc
Questo è fantastico !!! Per quelli che non hanno capito il ..., fai riferimento a questo ... http://stackoverflow.com/questions/3057341/how-to-use-rs-ellipsis-feature-when-writing-your-own-function – myloginid
message('for writing diagnostic info to standard error')
messaggio viene utilizzato per la generazione di messaggi di diagnostica 'semplici' che non sono né avvertimenti né errori, ma tuttavia rappresentato come condizioni. A differenza degli avvertimenti e degli errori, una nuova riga finale viene considerata parte del messaggio ed è facoltativa. Il gestore predefinito invia il messaggio alla connessione stderr().
Questo è su Linux, con R 2.8.1 (utilizzando Rscript) – Frank
Questo codice funziona anche su Windows. Per più controllo di formattazione, puoi usare cat invece di scrivere. –
FWIW, questo è limitato, in quanto funziona solo se il primo argomento può essere emesso da 'cat'. Ci sono classi che richiedono 'print' per funzionare, dove devi usare' sink', come dice Galwegian sotto. – Harlan