Отображение ошибок со свивом - PullRequest
9 голосов
/ 28 июня 2010

Я пишу несколько R-заметок с помощью Sweave и хотел бы показать типичные ошибки.Например,

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

Однако при свипировании документ не будет скомпилирован из-за ошибки R.Есть ли способ заставить sweave компилироваться и показывать (красиво отформатированную) ошибку?

Ответы [ 3 ]

8 голосов
/ 15 мая 2012

Это не проблема с knitr, «следующим поколением Sweave», если можно так выразиться.Он отображает ошибки и предупреждения по умолчанию, что было трудно или невозможно в Sweave, наряду с множеством других приятных функций (таких как подсветка синтаксиса, интеграция с PGF и анимация сюжета, для начинающих).Он также активно разрабатывается и поддерживается.

Sweave код необходимо конвертировать один раз с использованием функции Sweave2knitr, предоставляемой тем же пакетом.

5 голосов
/ 28 июня 2010

Как предполагает Шейн, используйте

<<echo=TRUE,eval=FALSE>> 

для кода, который выдает ошибку, но вы хотите отобразить, а затем снова с

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

но с тем же кодом, завернутым в попытку.

Здесь есть пример: http://tolstoy.newcastle.edu.au/R/help/05/09/11690.html

2 голосов
/ 28 июня 2010

Оберните вашу ошибку в команду try(). Тогда он продолжит работать:

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