Search code examples
rlatexknitrsweave

Suppressing Error Messages in knitr


I wonder how to suppress error messages in knitr. My MWE is below:

\documentclass{article} 
\begin{document}
<< Test >>=
1:10
X
@ 
\end{document}

Edited

The object X does not exist. I want to show X in my code chunk and want to evaluate it too even this will throw an error. But doesn't want to show any errors in my .tex document same as we can suppress warnings by setting warning=FALSE.


Solution

  • Errors have their own dedicated hook function, stored in the environment accessed by knit_hooks$get(). Here, for your enlightenment, is the complete list of those functions:

    names(knit_hooks$get())
    # [1] "source"   "output"   "warning"  "message"  "error"    "plot"    
    # [7] "inline"   "chunk"    "document"
    

    To suppress warnings, just overwrite the default error hook function with one that takes the required arguments, but doesn't return anything at all.

    \documentclass{article}
    \begin{document}
    
    <<setup, include=FALSE, cache=FALSE>>=
    muffleError <- function(x,options) {}
    knit_hooks$set(error=muffleError)
    @
    
    <<Test>>=
    1:10
    X
    @
    \end{document}
    

    Which, upon compilation, yields the following

    enter image description here