2010-06-28 13 views
8

Ich schreibe einige R-Notizen mit Sweave und möchte häufige Fehler anzeigen. Zum BeispielAnzeigen von Fehlern mit Sweave

<<echo=TRUE, eval=TRUE>>= 
x = 5 
#Case matters! 
x*X 
@ 

Allerdings wird das Dokument beim Retten wegen des R-Fehlers nicht kompiliert. Gibt es eine Möglichkeit, Sweave kompilieren zu lassen und den (schön formatierten) Fehler anzuzeigen?

Antwort

5

Als Shane schon sagt, verwenden

<<echo=TRUE,eval=FALSE>> 

für den Code, der Fehler wird, aber Sie anzeigen möchten, und dann wieder mit

<<echo=FALSE,eval=TRUE,results=verbatim>> 

aber mit dem gleichen Code in einem Versuch verpackt.

Es gibt hier ein Beispiel: http://tolstoy.newcastle.edu.au/R/help/05/09/11690.html

2

Wickeln Sie Ihren Fehler in einen Befehl. Dann wird es am Laufen halten:

> {print(1); try(x*X); print(2)} 
[1] 1 
Error in try(x * X) : object 'X' not found 
[1] 2 
+0

Ich dachte darüber nach, aber ich möchte vermeiden, 'try' anzuzeigen – csgillespie

+1

Mein anderer Gedanke war, dass es möglicherweise eine Option (error = some.function), die funktionieren könnte, aber ich kann nichts finden. Sie können jedes Stück Code zweimal aufrufen: einmal mit einem Versuch und echo = FALSE, aber eval = TRUE und erfassen Sie die Fehlermeldung. Dann einmal ohne Versuch und die Einstellungen umgekehrt. Dann drucken Sie die Fehlermeldung separat aus. – Shane

8

Dies ist ein nicht-Problem mit knitr, der "nächsten Generation Sweave", wenn ich so sagen darf. Es zeigt standardmäßig Fehler und Warnungen an, die in Sweave zusammen mit einer Vielzahl anderer nützlicher Funktionen (wie Syntax-Färbung, PGF-Integration und Plot-Animation, für Anfänger) schwierig oder unmöglich waren. Es wird auch aktiv entwickelt und gepflegt.

Sweave Code muss einmal mit der Funktion Sweave2knitr konvertiert werden, die vom selben Paket bereitgestellt wird.