2010-06-28 21 views
8

我正在用Sweave寫一些R筆記,並想顯示常見錯誤。例如,用sweave顯示錯誤

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

但是,當進行擦除時,由於R錯誤,文檔將無法編譯。有什麼辦法讓sweave編譯並顯示(很好的格式化)錯誤?

回答

2

將您的錯誤包含在try()命令中。與

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

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

我想到了這一點,但想避免顯示'嘗試' – csgillespie 2010-06-28 10:01:53

+1

我的另一個想法是,可能有一個選項(錯誤= some.function)可以工作,但我什麼都找不到。您可以調用每段代碼兩次:一次使用try和echo = FALSE但eval = TRUE並捕獲錯誤消息。然後,一旦沒有嘗試和設置顛倒。然後單獨打印出錯信息。 – Shane 2010-06-28 10:12:10

8

這是一個非問題與knitr,「下一代Sweave」,如果我可以這麼說。它默認顯示錯誤和警告,在Sweave中很難或根本不可能,同時還有許多其他不錯的功能(例如語法着色,PGF整合和劇情動畫,對於初學者)。它也被積極開發和維護。

Sweave代碼必須使用同一包提供的函數Sweave2knitr轉換一次。