2012-07-26 9 views
11

Se eseguo lo script R sotto la riga di comando (in realtà eseguo tale da chiamare in VBA), come posso inviare eventuali messaggi di errore/avviso a un txt file?Errore di output/log di avviso (file txt) quando si esegue lo script R sotto la riga di comando

+0

Come su yourprogram.exe> ​​anoutputfile.txt? Anche se questo cattura tutto. Su * nix è possibile dirigere stderr, non sono sicuro di Win *. Vedi http://stackoverflow.com/questions/1109017/how-do-you-print-to-stderr-in-r – Pete855217

+1

È possibile utilizzare 'sink()' – Andrie

+0

Grazie. Ho provato a cercare sul web come usare sink in R ma un po 'confuso su come emettere un messaggio di errore/avviso nel mio caso. Ti dispiacerebbe darmi un rapido esempio su come farlo? Grazie ancora. – Joyce

risposta

26

È possibile utilizzare sink() per deviare messaggi e avvisi su un file. Il trucco è quello di impostare l'argomento type="message":

Ecco un esempio tratto dal aiuto per ?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

Grandi cose, grazie! – Joyce

+3

Tuttavia, come posso chiudere la connessione con il file di registro? Ho provato sink(), ma quando voglio eliminare il file di registro, non posso cancellarlo, poiché sembra che ci sia ancora una connessione. Solo dopo aver chiuso la mia R, posso cancellarlo. Come dovrei chiudere la connessione? – Joyce

+1

Questo perché nella risposta originale, il sink non è stato terminato con 'type =" message "' e la connessione non è stata chiusa. (Risolto nella risposta aggiornata) – Jthorpe

17

Per chiudere la connessione con il file di log è necessario utilizzare sink(type="message") invece di sink() e poi close(zz) .

(non ho abbastanza reputazione per utilizzare la funzione Add comment)

Problemi correlati