knitr example doesn't produce graphics


RStudio by default uses Sweave for .Rnw files and adds the line \SweaveOpts{concordance=TRUE} after \begin{document}. Set "Sweave" from Global or Project Options (from the Tool menu) to specify knitr processing instead of Sweave.


Related videos on Youtube

Simon Kuang
Author by

Simon Kuang

Updated on August 01, 2022


  • Simon Kuang
    Simon Kuang over 1 year

    I tried compiling the given MWE for testing knitr:

    %% LyX 2.1.3 created this file.  For more info, see
    %% Do not edit unless you really know what you are doing.
     breaklinks=false,pdfborder={0 0 1},backref=false,colorlinks=false]
     pdfstartview={XYZ null null 1}}
    <<setup, include=FALSE, cache=FALSE>>=
    # set global chunk options
    opts_chunk$set(fig.path='figure/minimal-', fig.align='center','hold')
    \title{A Minimal Demo of knitr}
    \author{Yihui Xie}
    You can test if \textbf{knitr} works with this minimal demo. OK, let's
    get started with some boring random numbers:
    The first element of \texttt{x} is \Sexpr{x[1]}. Boring boxplots
    and histograms recorded by the PDF device:
    <<boring-plots, fig.width=4, fig.height=4, out.width='.4\\linewidth'>>=
    ## two plots side by side (option'hold')
    Do the above chunks work? You should be able to compile the \TeX{}
    document and get a PDF file like this one: \url{}.
    The Rnw source of this document is at \url{}.

    I copied the code into a Sweave document in RStudio and clicked "Compile PDF." The resulting PDF looks kind of like this (2 pages placed side-by-side):

    both pages

    What's wrong?

    • R. Schumacher
      R. Schumacher over 8 years
      This is the hazard of using a template without reading the supporting manuals. The code knitr-minimal.Rnw is written in knitr complaint syntax and it preprocesses-compiles-views correctly using the knit-command then pdflatex then view-pdf. However, you added line 18, \SweaveOpts{concordance=TRUE} which is a Sweave specific command requiring the Sweave preprocessor. The end result is not the expected output. Remove line 18.
    • sandro
      sandro over 8 years
      You have to compile it with knitr and not with Sweave. With Sweave I get your result and with knitr (if you omit the line with sweaveopts), you should obtain the desired result
  • R. Schumacher
    R. Schumacher over 8 years
    Go here and see how to change the RStudio default. Or, you will have to do a bit of rewriting as Sweave does not handle graphics as cleanly as knitr. In Sweave, to get two graphics side by side you have to set up a dual pane graphic window in R and manage all the labels, etc in R. Knitr allows you to take more advantage of the control of structure offered by LaTeX.