+Department of Statistics, Iowa State University.
+ Email:
+\begin_inset CommandInset href
+LatexCommand href
+name "xie@yihui.name"
+target "xie@yihui.name"
+type "mailto:"
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+and
+\end_layout
+
+\end_inset
+
+ Gregor Gorjanc
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+and
+\end_layout
+
+\end_inset
+
+ Jean-Marc Lasgouttes
+\end_layout
+
+\begin_layout Standard
+Sweave is a tool in the R language (
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://www.r-project.org
+\end_layout
+
+\end_inset
+
+) for dynamic report generation using the ideas of literate programming.
+ R code can be mixed into a LaTeX document, and will be executed in R when
+ the document is compiled; the results are written into the TeX output.
+\end_layout
+
+\begin_layout Standard
+Since LyX 2.0, Sweave can be used out of the box with any document class
+ using the
+\family sans
+Sweave
+\family default
+ module, which means we no longer need to modify the
+\family sans
+preferences
+\family default
+ file manually or add special layouts such as
+\family sans
+literate-article.layout
+\family default
+ and
+\family sans
+literate-book.layout
+\family default
+ like we did before.
+ We can add the
+\family sans
+Sweave
+\family default
+ module to a LyX document from
+\family sans
+Document\SpecialChar \menuseparator
+Settings\SpecialChar \menuseparator
+Modules
+\family default
+.
+ In this manual, we demonstrate some common features of Sweave and explain
+ how the module works.
+ A PDF version of this manual can be found at
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+https://github.com/downloads/yihui/lyx/sweave.pdf
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+System Requirements
+\end_layout
+
+\begin_layout Standard
+The
+\family sans
+Sweave
+\family default
+ module depends on the executable
+\family typewriter
+Rscript
+\family default
+, so it has to be in the
+\family sans
+PATH
+\family default
+ variable of the system.
+ It is usually not a problem for Linux and Mac OS users, but may be confusing
+ to Windows users; if you do not understand what is
+\family sans
+PATH
+\family default
+ under Windows, you may use the R script
+\family sans
+add-R-path-win.R
+\family default
+ in the repository
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+https://github.com/yihui/lyx
+\end_layout
+
+\end_inset
+
+ to change it automatically (we recommend you to learn
+\family sans
+PATH
+\family default
+ anyway).
+\end_layout
+
+\begin_layout Standard
+If
+\family typewriter
+Rscript
+\family default
+ is not present in
+\family sans
+PATH
+\family default
+, the
+\family sans
+Sweave
+\family default
+ module will be unavailable.
+ It is recommended to use the latest version of R, since Sweave is still
+ being updated.
+ Another dependency is introduced by the LaTeX style file
+\family sans
+Sweave.sty
+\family default
+ which is shipped with R under this path (it is not on CTAN):
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<sweave-sty,eval=FALSE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+file.path(R.home('share'), 'texmf', 'tex', 'latex')
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+MikTeX users may add the texmf directory to the list of root directories
+ in MikTeX through MikTeX settings.
+ Further note that
+\family sans
+Sweave.sty
+\family default
+ depends on the
+\series bold
+fancyvrb
+\series default
+ package and
+\emph on
+may
+\emph default
+ depend on
+\series bold
+ae
+\series default
+.
+ If LyX cannot find
+\family sans
+Sweave.sty
+\family default
+, it will directly copy from R, so the Sweave module works even if you do
+ not know where is this style file.
+\end_layout
+
+\begin_layout Section
+Sweave Examples
+\end_layout
+
+\begin_layout Standard
+Before we write an Sweave document, we can set some Sweave options; the
+ command is
+\family typewriter
+
+\backslash
+SweaveOpts{}
+\family default
+ in Sweave and it can be inserted in a LyX document by
+\family sans
+Insert\SpecialChar \menuseparator
+Custom Insets\SpecialChar \menuseparator
+Sweave Options
+\family default
+, or just use TeX code to write it (
+\family sans
+Insert\SpecialChar \menuseparator
+TeX Code
+\family default
+).
+ For example, we can set a global option
+\family typewriter
+echo=FALSE
+\family default
+ in the beginning of a document to suppress all R code (by default, both
+ R code and its output will show up in the LaTeX document).
+
+\end_layout
+
+\begin_layout Standard
+To write R code in LyX, you can first switch to the
+\family typewriter
+Chunk
+\family default
+ environment in the layout styles list (droplist in the top-left corner
+ in the toolbar), or you can simply open a TeX code environment and write
+ Sweave code chunks in it.
+ The latter approach is recommended since it is more stable.
+\end_layout
+
+\begin_layout Standard
+Some R options can be useful to the Sweave output as well, e.g.
+
+\family typewriter
+width
+\family default
+ and
+\family typewriter
+useFancyQuotes
+\family default
+.
+ The former option can adjust the width of the output, and the latter can
+ avoid a common problem with quotes.
+ Users are encouraged to read the Sweave manual in R for more details.
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<setup, keep.source=TRUE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+## the option 'digits' can set the (approximate) number of digits
+\end_layout
+
+\begin_layout Plain Layout
+
+options(width = 70, useFancyQuotes = FALSE, digits = 4)
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\begin_layout Plain Layout
+
+<<sweave-manual, eval=FALSE, keep.source=TRUE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+## view the Sweave vignette (requires R >= 2.13.0)
+\end_layout
+
+\begin_layout Plain Layout
+
+vignette("Sweave", package = "utils")
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+A simple example that will run in any S engine:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<print-integers, keep.source=TRUE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+## the integers from 1 to 10 are
+\end_layout
+
+\begin_layout Plain Layout
+
+1:10
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\begin_layout Plain Layout
+
+<<hide-results, results=hide>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+## intentionally hide the output by setting results=hide
+\end_layout
+
+\begin_layout Plain Layout
+
+print(1:20)
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+We can also emulate a simple calculator:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<calculator>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+1 + pi
+\end_layout
+
+\begin_layout Plain Layout
+
+sin(pi/6)
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Now we look at some Gaussian data:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<rnorm>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+set.seed(123) # for reproducibility
+\end_layout
+
+\begin_layout Plain Layout
+
+x <- rnorm(20)
+\end_layout
+
+\begin_layout Plain Layout
+
+print(x)
+\end_layout
+
+\begin_layout Plain Layout
+
+t1 <- t.test(x)
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Note that we can easily integrate some numbers into standard text; this
+ is done with the command
+\family typewriter
+
+\backslash
+Sexpr{}
+\family default
+, and the corresponding LyX menu is
+\family sans
+Insert\SpecialChar \menuseparator
+Custom Insets\SpecialChar \menuseparator
+S/R expression
+\family default
+, or alternatively just use TeX code.
+ For example, the third element of the vector
+\family typewriter
+x
+\family default
+ is
+\begin_inset Flex S/R expression
+status collapsed
+
+\begin_layout Plain Layout
+
+x[3]
+\end_layout
+
+\end_inset
+
+ (i.e.
+
+\family typewriter
+x[3]
+\family default
+) and the
+\begin_inset Formula $p$
+\end_inset
+
+-value of the test is
+\begin_inset Flex S/R expression
+status collapsed
+
+\begin_layout Plain Layout
+
+format.pval(t1$p.value)
+\end_layout
+
+\end_inset
+
+.
+ You can round these numbers using functions like
+\emph on
+round()
+\emph default
+ in R.
+
+\end_layout
+
+\begin_layout Standard
+
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+Now we look at a summary of the
+\family typewriter
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+iris
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+ dataset:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<iris-summary>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+summary(iris[,-5])
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Float table
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Quantiles of the first four variables in the
+\family typewriter
+iris
+\family default
+ data.
+\begin_inset CommandInset label
+LatexCommand label
+name "tab:xtable-demo"
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{center}
+\end_layout
+
+\begin_layout Plain Layout
+
+<<xtable-demo,results=tex,echo=FALSE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+if (require('xtable')) {
+\end_layout
+
+\begin_layout Plain Layout
+
+print(xtable(sapply(iris[,-5], quantile)), floating=FALSE)
+\end_layout
+
+\begin_layout Plain Layout
+
+} else cat('the xtable package is not available! please install.packages("xtable"
+)')
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{center}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Usually people do not like such
+\begin_inset Quotes eld
+\end_inset
+
+raw
+\begin_inset Quotes erd
+\end_inset
+
+ output, and we can polish these messy numbers with the
+\series bold
+xtable
+\series default
+ package.
+ Table
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:xtable-demo"
+
+\end_inset
+
+ is an example demonstrating how to use the
+\series bold
+xtable
+\series default
+ package with Sweave; note the chunk option
+\family typewriter
+results=tex
+\family default
+ makes sure that the R output is written out as raw LaTeX code instead of
+ being wrapped in a special environment (
+\family typewriter
+Soutput
+\family default
+).
+\end_layout
+
+\begin_layout Standard
+Figure
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:iris-pairs"
+
+\end_inset
+
+ and
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "fig:iris-boxplots"
+
+\end_inset
+
+ are two simple examples of producing graphics output with Sweave.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{center}
+\end_layout
+
+\begin_layout Plain Layout
+
+<<iris-pairs,fig=TRUE,width=4.5,height=4.5>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+pairs(iris, col = iris$Species)
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{center}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption
+
+\begin_layout Plain Layout
+Scatter plot matrix of the
+\family typewriter
+iris
+\family default
+ data.
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:iris-pairs"
+