2012-07-26 13 views
11

Si ejecuto el script R bajo la línea de comando (en realidad lo ejecuto desde VBA), ¿cómo puedo enviar mensajes de error/advertencia a un txt ¿archivo?Error de salida/registro de advertencia (archivo txt) al ejecutar el script R en la línea de comando

+0

¿Qué tal yourprogram.exe> ​​anoutputfile.txt? Aunque eso captura todo. En * nix puede dirigir stderr, no está seguro acerca de Win *. Consulte http://stackoverflow.com/questions/1109017/how-do-you-print-to-stderr-in-r – Pete855217

+1

Posiblemente pueda usar 'sink()' – Andrie

+0

Gracias. Traté de buscar en la web cómo usar sink en R pero me confundí un poco sobre cómo mostrar el mensaje de error/advertencia en mi caso. ¿Te importaría darme un ejemplo rápido de cómo hacer eso? Gracias de nuevo. – Joyce

Respuesta

26

Puede usar sink() para desviar mensajes y advertencias a un archivo. El truco consiste en establecer el argumento type="message":

Aquí es un ejemplo adaptado de la ayuda para ?sink:

setwd(tempdir()) 

## capture messages and errors to a file. 
zz <- file("all.Rout", open="wt") 
sink(zz, type="message") 

try(log("a")) 

## reset message sink and close the file connection 
sink(type="message") 
close(zz) 

## Display the log file 
readLines("all.Rout") 
[1] "Error in log(\"a\") : Non-numeric argument to mathematical function" 
+0

¡Cosas geniales, gracias! – Joyce

+3

Sin embargo, ¿cómo puedo cerrar la conexión con el archivo de registro? Probé sink(), pero cuando quiero eliminar el archivo de registro, no puedo eliminarlo, ya que parece que todavía hay conexión. Solo después de que cerré mi R, puedo borrar eso. ¿Cómo debo cerrar la conexión? – Joyce

+1

Esto se debe a que en la respuesta original, el receptor no finalizó con 'type =" message "' y la conexión no se cerró. (Solucionado en la respuesta actualizada) – Jthorpe

17

Para cerrar la conexión con el archivo de registro tiene que usar sink(type="message") en lugar de sink() y luego close(zz) .

(no tengo la reputación suficiente para utilizar la función de complemento comentario)

Cuestiones relacionadas