]> git.lyx.org Git - lyx.git/blobdiff - lib/examples/sweave.lyx
Natbib authoryear uses (Ref1; Ref2) by default.
[lyx.git] / lib / examples / sweave.lyx
index 3f082915f5554fc6f591761566cfc852f824014e..ccf0f070cadf6ef4ca96c2f050e942126a0c0f6f 100644 (file)
-#LyX 1.6.1 created this file. For more info see http://www.lyx.org/\r
-\lyxformat 345\r
-\begin_document\r
-\begin_header\r
-\textclass article\r
-\use_default_options true\r
-\begin_modules\r
-sweave\r
-\end_modules\r
-\language english\r
-\inputencoding auto\r
-\font_roman default\r
-\font_sans default\r
-\font_typewriter default\r
-\font_default_family default\r
-\font_sc false\r
-\font_osf false\r
-\font_sf_scale 100\r
-\font_tt_scale 100\r
-\r
-\graphics default\r
-\paperfontsize default\r
-\spacing single\r
-\use_hyperref false\r
-\papersize default\r
-\use_geometry false\r
-\use_amsmath 1\r
-\use_esint 1\r
-\cite_engine basic\r
-\use_bibtopic false\r
-\paperorientation portrait\r
-\secnumdepth 3\r
-\tocdepth 3\r
-\paragraph_separation skip\r
-\defskip medskip\r
-\quotes_language english\r
-\papercolumns 1\r
-\papersides 1\r
-\paperpagestyle default\r
-\tracking_changes false\r
-\output_changes false\r
-\author "" \r
-\author "" \r
-\end_header\r
-\r
-\begin_body\r
-\r
-\begin_layout Title\r
-A Test File\r
-\end_layout\r
-\r
-\begin_layout Author\r
-Friedrich Leisch\r
-\begin_inset Foot\r
-status collapsed\r
-\r
-\begin_layout Plain Layout\r
-LyX \r
-\begin_inset Quotes eld\r
-\end_inset\r
-\r
-port\r
-\begin_inset Quotes erd\r
-\end_inset\r
-\r
- by Gregor Gorjanc\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-A simple example that will run in any S engine: The integers from 1 to 10\r
- are\r
-\end_layout\r
-\r
-\begin_layout Chunk\r
-<<print=TRUE>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-1:10 \r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-<<results=hide>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-print(1:20)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@ % the above is just to ensure that 2 code chunks can follow each other\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-We can also emulate a simple calculator: \r
-\end_layout\r
-\r
-\begin_layout Chunk\r
-<<echo=TRUE,print=TRUE>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-1 + 1 \r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-1 + pi\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-sin(pi/2)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-Now we look at Gaussian data:\r
-\end_layout\r
-\r
-\begin_layout Chunk\r
-<<>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-library(stats)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-x <- rnorm(20)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-print(x)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-print(t1 <- t.test(x))\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-Note that we can easily integrate some numbers into standard text: The third\r
- element of vector \r
-\family typewriter\r
-x\r
-\family default\r
- is \r
-\begin_inset Flex S/R expression\r
-status collapsed\r
-\r
-\begin_layout Plain Layout\r
-\r
-x[3]\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-, the \r
-\begin_inset Formula $p$\r
-\end_inset\r
-\r
--value of the test is \r
-\begin_inset Flex S/R expression\r
-status collapsed\r
-\r
-\begin_layout Plain Layout\r
-\r
-format.pval(t1$p.value)\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-\r
-\family roman\r
-\series medium\r
-\shape up\r
-\size normal\r
-\emph off\r
-\bar no\r
-\noun off\r
-\color none\r
-Now we look at a summary of the famous iris dataset, and we want to see\r
- the commands in the code chunks:\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-\begin_inset Flex Sweave Options\r
-status open\r
-\r
-\begin_layout Plain Layout\r
-\r
-echo=true,keep.source=true\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\begin_layout Chunk\r
-<<engine=R>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-# A comment\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-data(iris)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-summary(iris)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@ % def\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-\begin_inset Float figure\r
-placement tbph\r
-wide false\r
-sideways false\r
-status collapsed\r
-\r
-\begin_layout Chunk\r
-\align center\r
-<<fig=TRUE>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-library(graphics)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-pairs(iris)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@\r
-\end_layout\r
-\r
-\begin_layout Plain Layout\r
-\begin_inset Caption\r
-\r
-\begin_layout Plain Layout\r
-Pairs plot of the iris data.\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-\begin_inset Float figure\r
-placement tbph\r
-wide false\r
-sideways false\r
-status collapsed\r
-\r
-\begin_layout Chunk\r
-\align center\r
-<<fig=true>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-boxplot(Sepal.Length~Species,data=iris)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@\r
-\end_layout\r
-\r
-\begin_layout Plain Layout\r
-\begin_inset Caption\r
-\r
-\begin_layout Plain Layout\r
-Boxplot of sepal length grouped by species.\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\begin_layout Chunk\r
-<<engine=S4>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-function.that.comes.only.with.Splus(x)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@\r
-\end_layout\r
-\r
-\begin_layout Standard\r
-\begin_inset Float figure\r
-wide false\r
-sideways false\r
-status open\r
-\r
-\begin_layout Chunk\r
-\align center\r
-<<fig=true>>=\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-boxplot(Sepal.Length~Species,data=iris)\r
-\begin_inset Newline newline\r
-\end_inset\r
-\r
-@\r
-\end_layout\r
-\r
-\begin_layout Plain Layout\r
-\begin_inset Caption\r
-\r
-\begin_layout Plain Layout\r
-Boxplot of sepal length grouped by species\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\end_inset\r
-\r
-\r
-\end_layout\r
-\r
-\end_body\r
-\end_document\r
+#LyX 2.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 462
+\begin_document
+\begin_header
+\textclass article
+\begin_preamble
+%% maxwidth is the original width if it's less than linewidth
+%% otherwise use linewidth (to make sure the graphics do not exceed the margin)
+\def\maxwidth{%
+\ifdim\Gin@nat@width>\linewidth
+\linewidth
+\else
+\Gin@nat@width
+\fi
+}
+\end_preamble
+\options nogin
+\use_default_options true
+\begin_modules
+sweave
+\end_modules
+\maintain_unincluded_children false
+\language english
+\language_package auto
+\inputencoding default
+\fontencoding global
+\font_roman palatino
+\font_sans lmss
+\font_typewriter lmtt
+\font_math auto
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry true
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 0
+\use_package mhchem 1
+\use_package stackrel 0
+\use_package stmaryrd 0
+\use_package undertilde 0
+\cite_engine basic
+\cite_engine_type numerical
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 3cm
+\topmargin 3cm
+\rightmargin 3cm
+\bottommargin 3cm
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+%
+\backslash
+SweaveOpts{prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+%% 
+\backslash
+maxwidth was defined in the preamble; see document settings
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+setkeys{Gin}{width=
+\backslash
+maxwidth}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Title
+Using Sweave with LyX
+\end_layout
+
+\begin_layout Author
+Yihui Xie
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+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.
+ 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 either 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 (not recommended; you should learn 
+\family sans
+PATH
+\family default
+ anyway), or go to 
+\family sans
+Tools\SpecialChar \menuseparator
+Preferences\SpecialChar \menuseparator
+Paths\SpecialChar \menuseparator
+PATH prefix
+\family default
+ to add the bin path of R (recommended), which is often like 
+\family sans
+C:
+\backslash
+Program Files
+\backslash
+R
+\backslash
+R-x.x.x
+\backslash
+bin
+\family default
+ and you can find it in R:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<where-is-R-bin,eval=FALSE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+R.home('bin')
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+After you have done these changes, you need to reconfigure LyX by 
+\family sans
+Tools\SpecialChar \menuseparator
+Reconfigure
+\family default
+.
+ 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 Standard
+
+\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
+\align center
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+\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
+
+\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
+\align center
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+Both eps and pdf are set to true so that both latex and pdflatex work.
+ In practice, you would probably just choose one.
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+pairs(iris, col = iris$Species)
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption Standard
+
+\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"
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Float figure
+wide false
+sideways false
+status open
+
+\begin_layout Plain Layout
+\align center
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+par(mar=c(4,5,.1,.3), las=1)
+\end_layout
+
+\begin_layout Plain Layout
+
+boxplot(Sepal.Length~Species,data=iris,horizontal=TRUE,xlab='Sepal.Length')
+\end_layout
+
+\begin_layout Plain Layout
+
+@
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Caption Standard
+
+\begin_layout Plain Layout
+Boxplots of sepal length grouped by species.
+\begin_inset CommandInset label
+LatexCommand label
+name "fig:iris-boxplots"
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+We can also export all the R code in an Sweave document as a single R script
+ (
+\family sans
+File\SpecialChar \menuseparator
+Export\SpecialChar \menuseparator
+R/S code
+\family default
+), which is done via 
+\family typewriter
+R CMD Stangle
+\family default
+.
+\end_layout
+
+\begin_layout Section
+The 
+\family sans
+Sweave
+\family default
+ Module
+\end_layout
+
+\begin_layout Standard
+The 
+\family sans
+Sweave
+\family default
+ module declares that a LyX document contains literate programming components
+ with R, so that LyX will handle such documents according to the specific
+ converters (see the Customization manual).
+ The 
+\family sans
+Sweave
+\family default
+ module uses the 
+\family sans
+sweave
+\family default
+ converter, which essentially consists of an R script 
+\family sans
+lyxsweave.R
+\family default
+ under the 
+\family sans
+scripts
+\family default
+ directory of LyX.
+ This script takes an 
+\family sans
+Rnw
+\family default
+ document from LyX and call Sweave to process it to a TeX document, then
+ LyX takes care of the rest of work.
+\end_layout
+
+\begin_layout Standard
+The converter from the 
+\family sans
+sweave
+\family default
+ format to LaTeX is a call to R via the command line as:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{verbatim}
+\end_layout
+
+\begin_layout Plain Layout
+
+Rscript --no-save --no-restore $$s/scripts/lyxsweave.R $$p$$i $$p$$o $$e
+ $$r
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{verbatim}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The LyX library directory 
+\family typewriter
+$$s
+\family default
+ can be found from the menu 
+\family sans
+Help\SpecialChar \menuseparator
+About LyX
+\family default
+.
+ All the rest of options passed to R are explained in the R script, and
+ the LyX Customization manual also has detailed explanations about 
+\family typewriter
+$$i
+\family default
+, 
+\family typewriter
+$$o
+\family default
+, 
+\family typewriter
+$$e
+\family default
+ and 
+\family typewriter
+$$r
+\family default
+.
+ General users do not need to know clearly what they mean, but here we need
+ to explain a few issues in the R code:
+\end_layout
+
+\begin_layout Enumerate
+the encoding string of the LyX document is passed to R as an command line
+ option; possible values are 
+\family typewriter
+ISO-8859-15
+\family default
+ and 
+\family typewriter
+UTF-8
+\family default
+, etc.
+ The encoding is used for R to read the 
+\family sans
+Rnw
+\family default
+ document correctly.
+\end_layout
+
+\begin_layout Enumerate
+the R code chunks in the Sweave document are executed under the directory
+ of the LyX document (if you are not sure, put 
+\family typewriter
+getwd()
+\family default
+ in a code chunk to see what is the current working directory).
+ In this case, you can put data files under the same directory and use relative
+ paths in R to guarantee reproducibility, i.e.
+ we do not need to write hard-coded paths which may not exist in other systems.
+\end_layout
+
+\begin_layout Enumerate
+if LaTeX cannot find 
+\family sans
+Sweave.sty
+\family default
+, this R script will copy it to the temporary directory automatically where
+ the LaTeX compilation takes place.
+\end_layout
+
+\begin_layout Enumerate
+Sweave will use the filename of the Rnw file as the prefix string for the
+ graphics output by default; one known issue (
+\begin_inset CommandInset href
+LatexCommand href
+name "#7551"
+target "http://www.lyx.org/trac/ticket/7551"
+
+\end_inset
+
+) is that if the filename (without extension) contains dots, LaTeX can fail
+ to deal with such files in 
+\family typewriter
+
+\backslash
+includegraphics{}
+\family default
+.
+ Therefore, we have set the default value of the prefix to be the filename
+ with all the dots being replaced by 
+\begin_inset Quotes eld
+\end_inset
+
+-
+\begin_inset Quotes erd
+\end_inset
+
+.
+ We can also solve this problem in Sweave directly: set the Sweave option
+\family typewriter
+prefix.string
+\family default
+ to be a character string without dots, and this option will override the
+ default value.
+\end_layout
+
+\begin_layout Standard
+We have pre-specified an option 
+\family typewriter
+noae
+\family default
+ for the Sweave package.
+ This option stops Sweave from loading these two packages:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{verbatim}
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+RequirePackage[T1]{fontenc}  
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+RequirePackage{ae}
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{verbatim}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+LyX can deal with the font encoding by default, so there is no need to ask
+ Sweave to do this (furthermore, this may bring clashes of package options);
+ besides, the users can load the 
+\series bold
+ae
+\series default
+ package by themselves in the preamble if needed.
+\end_layout
+
+\begin_layout Section
+Trouble Shooting
+\end_layout
+
+\begin_layout Standard
+Since LyX 2.0, we can see the detailed information during compilation via
+\family sans
+View\SpecialChar \menuseparator
+View Messages
+\family default
+.
+ This is extremely helpful for trouble shooting -- the process of R will
+ be shown in the message panel, and we will be able to know which chunk
+ goes wrong in cases of errors.
+ For example, when you compile this document, you can see messages like
+ below:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{verbatim}
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:47.868: Processing code chunks with options ...
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:47.885:  1 : echo keep.source term verbatim (label=setup)
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:47.889:  2 : echo keep.source (label=sweave-manual)
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:47.908:  3 : echo keep.source term verbatim (label=print-integers)
+\end_layout
+
+\begin_layout Plain Layout
+
+....
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:47.941: Loading required package: xtable
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:47.976:  9 : echo term verbatim pdf (label=iris-pairs)
+\end_layout
+
+\begin_layout Plain Layout
+
+....
+\end_layout
+
+\begin_layout Plain Layout
+
+17:58:48.116: You can now run (pdf)latex on 'sweave.tex'
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{verbatim}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The string after 
+\family typewriter
+label=
+\family default
+ is the chunk label.
+ If any chunk causes an error in R, you will see the error message here
+ immediately.
+\end_layout
+
+\begin_layout Standard
+Another known issue is the Sweave code chunk may fail when we change the
+ alignment of the chunk paragraph in LyX (using 
+\family sans
+Paragraph settings
+\family default
+), because LyX may add a macro like 
+\family typewriter
+
+\backslash
+centering{}
+\family default
+ before the code chunk without adding a new line, which will lead to a code
+ chunk like this:
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{verbatim}
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering{}<<xtable-demo,results=tex,echo=FALSE>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{verbatim}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+This is not a legitimate Sweave code chunk, since 
+\family typewriter
+<<>>=
+\family default
+ must start in a new line with nothing before it.
+ Therefore we recommend you to double check the real source code via 
+\family sans
+View\SpecialChar \menuseparator
+View Source
+\family default
+ when changing the alignment of a chunk paragraph, and make sure 
+\family typewriter
+<<>>=
+\family default
+ appears in a new line.
+ This explains why we manually added an empty line in the code chunk in
+ Table 
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "tab:xtable-demo"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+Resources
+\end_layout
+
+\begin_layout Standard
+The homepage of Sweave is at 
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://www.stat.uni-muenchen.de/~leisch/Sweave/
+\end_layout
+
+\end_inset
+
+.
+ The CRAN task view on 
+\begin_inset Quotes eld
+\end_inset
+
+Reproducible Research
+\begin_inset Quotes erd
+\end_inset
+
+ has a list of Sweave-related packages which can be potentially useful;
+ see 
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://cran.r-project.org/web/views/ReproducibleResearch.html
+\end_layout
+
+\end_inset
+
+.
+ Questions about LyX and Sweave can be posted to the LyX mailing list (
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+http://www.lyx.org/MailingLists
+\end_layout
+
+\end_inset
+
+).
+ More LyX examples are provided at 
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+https://github.com/yihui/lyx
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Section
+FAQ
+\end_layout
+
+\begin_layout Subsection
+How to use Sweave with beamer?
+\end_layout
+
+\begin_layout Standard
+You will end up with LaTeX errors if you use Sweave in normal beamer slides
+ in LyX; the reason is the beamer frame that contains verbatim R code.
+ The solution is to use a 
+\emph on
+FragileFrame
+\emph default
+ instead of a normal 
+\emph on
+Frame
+\emph default
+, or to pass the option 
+\family typewriter
+fragile
+\family default
+ to the frame title via 
+\family sans
+Insert\SpecialChar \menuseparator
+Frame Options
+\family default
+.
+\end_layout
+
+\begin_layout Subsection
+Can I define my own R script to compile the Rnw document?
+\end_layout
+
+\begin_layout Standard
+Yes, of course.
+ First you need to understand how the R script 
+\family typewriter
+$$s
+\family sans
+/scripts/lyxsweave.R
+\family default
+ works, which was introduced previously, and we recommend you to read the
+ R source code as well (on how R takes the paths and uses 
+\emph on
+Sweave()
+\emph default
+ to handle the Rnw document).
+ Then you put your customized 
+\family sans
+lyxsweave.R
+\family default
+ under the 
+\family sans
+scripts
+\family default
+ directory of your 
+\emph on
+user directory
+\emph default
+ (again, see 
+\family sans
+Help\SpecialChar \menuseparator
+About LyX
+\family default
+).
+ Note LyX will check the 
+\emph on
+user directory
+\emph default
+ before going to its own 
+\emph on
+library directory
+\emph default
+; if an R script 
+\family sans
+lyxsweave.R
+\family default
+ is found in the user directory, it will be used.
+ It is not recommended to hack the script under the LyX library directory
+ directly, since updating LyX will override you modified script (the user
+ directory will not be affected).
+\end_layout
+
+\begin_layout Standard
+Beside the support for the official Sweave in R, the 
+\series bold
+knitr
+\series default
+ package is also supported, which is an alternative tool to Sweave; the
+ corresponding module is named 
+\family sans
+Rnw (knitr)
+\family default
+.
+\end_layout
+
+\end_body
+\end_document