我正在用Sweave寫一些R筆記,並想顯示常見錯誤。例如,用sweave顯示錯誤
<<echo=TRUE, eval=TRUE>>=
x = 5
#Case matters!
x*X
@
但是,當進行擦除時,由於R錯誤,文檔將無法編譯。有什麼辦法讓sweave編譯並顯示(很好的格式化)錯誤?
我正在用Sweave寫一些R筆記,並想顯示常見錯誤。例如,用sweave顯示錯誤
<<echo=TRUE, eval=TRUE>>=
x = 5
#Case matters!
x*X
@
但是,當進行擦除時,由於R錯誤,文檔將無法編譯。有什麼辦法讓sweave編譯並顯示(很好的格式化)錯誤?
至於巴蒂爾表明,使用
<<echo=TRUE,eval=FALSE>>
爲將錯誤代碼,但要顯示,然後再:然後,它會繼續運行嘗試使用相同的代碼。
這裏有一個例子: http://tolstoy.newcastle.edu.au/R/help/05/09/11690.html
將您的錯誤包含在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
這是一個非問題與knitr
,「下一代Sweave
」,如果我可以這麼說。它默認顯示錯誤和警告,在Sweave
中很難或根本不可能,同時還有許多其他不錯的功能(例如語法着色,PGF整合和劇情動畫,對於初學者)。它也被積極開發和維護。
Sweave
代碼必須使用同一包提供的函數Sweave2knitr
轉換一次。
我想到了這一點,但想避免顯示'嘗試' – csgillespie 2010-06-28 10:01:53
我的另一個想法是,可能有一個選項(錯誤= some.function)可以工作,但我什麼都找不到。您可以調用每段代碼兩次:一次使用try和echo = FALSE但eval = TRUE並捕獲錯誤消息。然後,一旦沒有嘗試和設置顛倒。然後單獨打印出錯信息。 – Shane 2010-06-28 10:12:10