2012-07-26 16 views
11

R komut dosyasını komut satırında çalıştırıyorsam (aslında VBA'da aramadan bunu çalıştırıyorum), herhangi bir hata/uyarı iletisini bir txt'ye nasıl verebilirim dosya?Komut satırı altında R komut dosyasını çalıştırırken çıkış hatası/uyarı günlüğü (txt dosyası)

+0

nasıl yourprogram.exe hakkında> anoutputfile.txt (ı add comment fonksiyonunu kullanmak için yeterli itibar yok)? Her ne kadar her şeyi yakalasa da. On * nix, stderr'i yönlendirebilir, Win * hakkında emin olamazsınız. Bkz. Http://stackoverflow.com/questions/1109017/how-do-you-print-to-stderr-in-r – Pete855217

+1

Büyük olasılıkla 'sink()' – Andrie

+0

kullanabilirsiniz. Web'de R'de batırmayı nasıl kullanacağım konusunda arama yapmayı denedim ama durumumda hata/uyarı mesajının nasıl çıkacağı konusunda biraz kafa karıştı. Bana bunun nasıl yapılacağına dair hızlı bir örnek verebilir misin? Tekrar teşekkürler. – Joyce

cevap

26

İletileri ve uyarıları bir dosyaya yönlendirmek için sink()'u kullanabilirsiniz.

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

Harika şeyler, teşekkürler! – Joyce

+3

Ancak, günlük dosyasıyla bağlantıyı nasıl kapatabilirim? Sink() denedim, ancak günlük dosyasını silmek istediğimde, hala bağlantı olduğunu düşündüğümden bunu silemiyorum. Sadece R'mı kapattıktan sonra onu silebilirim. Bağlantıyı nasıl kapatmalıyım? – Joyce

+1

Bunun nedeni, orijinal yanıtta, 'type = "message" 'ile sonlandırılmadı ve bağlantı kapatılmadı. (Güncellenmiş cevapta düzeltildi) – Jthorpe

17

günlük dosyası ile bağlantıyı kapatmak için var sink(type="message") yerine sink() ve sonra close(zz) kullanmak: Burada

bir ?sink için yardım uyarlanmış örnektir: hile argüman type="message" ayarlamaktır .

İlgili konular