¿Cómo imprime en stderr
en R
?¿Cómo imprime en stderr en R?
Esto sería especialmente útil para los scripts escritos en Rscript
.
¿Cómo imprime en stderr
en R
?¿Cómo imprime en stderr en R?
Esto sería especialmente útil para los scripts escritos en Rscript
.
En realidad, las siguientes obras para mí:
write("prints to stderr", stderr())
write("prints to stdout", stdout())
¿Es posible configurar la función de impresión para imprimir en stderr?
No, pero ¿dónde está la salida estándar va controlado por el fregadero(), por lo que puede lograr el mismo efecto. R internamente no tiene idea de qué salida proviene de print() (que no es solo una función pero cientos de métodos).
Aquí hay una versión más flexible para la depuración/uso detallado en RSCRIPT. No solo se imprime al stderr
como usted pregunta, sino que también le permite pasar un número variable de argumentos, tipos, etc., como printf
.
v <- function(...) cat(sprintf(...), sep='', file=stderr())
Ahora uno puede hacer cosas como:
v("name: %s age: %d\n", name, age)
etc.
Esto es genial! Para los que no entendieron el ..., consulte este .. 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')
de mensajes se utiliza para generar mensajes de diagnóstico 'simples' que no son ni advertencias ni errores, pero sin embargo, representados como condiciones. A diferencia de las advertencias y los errores, una nueva línea final se considera parte del mensaje y es opcional. El controlador predeterminado envía el mensaje a la conexión stderr().
Esto está en Linux, con R 2.8.1 (usando Rscript) – Frank
Este código también funciona en Windows. Para obtener más control de formato, puede usar cat en lugar de write. –
FWIW, esto es limitado, ya que solo funciona si 'cat' puede generar el primer argumento. Hay clases que requieren 'print' para funcionar, donde tienes que usar' sink', como dice Galwegian a continuación. – Harlan