]> git.lyx.org Git - lyx.git/blobdiff - lib/examples/sweave.lyx
Hebrew docs: No need to mark logos as English
[lyx.git] / lib / examples / sweave.lyx
index 4831fe60491b220adb92eb6247713210c0e44bf5..e11bcf9fef2771b9ad40ee4f70bd7358c508032e 100644 (file)
-#LyX 1.6.1 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
 \begin_document
 \begin_header
+\save_transient_properties true
+\origin /systemlyxdir/examples/
 \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
-\inputencoding auto
-\font_roman default
-\font_sans default
-\font_typewriter default
+\language_package auto
+\inputencoding default
+\fontencoding global
+\font_roman "palatino" "default"
+\font_sans "lmss" "default"
+\font_typewriter "lmtt" "default"
+\font_math "auto" "auto"
 \font_default_family default
+\use_non_tex_fonts false
 \font_sc false
 \font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures false
 \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 false
-\use_amsmath 1
-\use_esint 1
+\use_geometry true
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
 \cite_engine basic
+\cite_engine_type default
+\biblio_style plain
 \use_bibtopic false
+\use_indices false
 \paperorientation portrait
+\suppress_date true
+\justification true
+\use_refstyle 0
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\leftmargin 3cm
+\topmargin 3cm
+\rightmargin 3cm
+\bottommargin 3cm
 \secnumdepth 3
 \tocdepth 3
-\paragraph_separation skip
-\defskip medskip
-\quotes_language english
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
 \papercolumns 1
 \papersides 1
 \paperpagestyle default
 \tracking_changes false
 \output_changes false
-\author "" 
-\author "" 
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
 \end_header
 
 \begin_body
 
-\begin_layout Title
-A Test File
-\end_layout
+\begin_layout Standard
+\begin_inset Note Note
+status open
 
-\begin_layout Author
-Friedrich Leisch
-\begin_inset Foot
-status collapsed
+\begin_layout Plain Layout
+\begin_inset Flex Sweave Options
+status open
 
 \begin_layout Plain Layout
-LyX 
-\begin_inset Quotes eld
-\end_inset
 
-port
-\begin_inset Quotes erd
+prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE
+\end_layout
+
 \end_inset
 
- by Gregor Gorjanc
+
 \end_layout
 
 \end_inset
@@ -72,110 +120,242 @@ port
 \end_layout
 
 \begin_layout Standard
-A simple example that will run in any S engine: The integers from 1 to 10
- are
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+%% 
+\backslash
+maxwidth was defined in the preamble; see document settings
 \end_layout
 
-\begin_layout Chunk
-<<print=TRUE>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
 
-1:10 
-\begin_inset Newline newline
-\end_inset
 
-<<results=hide>>=
-\begin_inset Newline newline
-\end_inset
+\backslash
+setkeys{Gin}{width=
+\backslash
+maxwidth}
+\end_layout
 
-print(1:20)
-\begin_inset Newline newline
 \end_inset
 
-@ % the above is just to ensure that 2 code chunks can follow each other
+
 \end_layout
 
-\begin_layout Standard
-We can also emulate a simple calculator: 
+\begin_layout Title
+Using Sweave with \SpecialChar LyX
+
 \end_layout
 
-\begin_layout Chunk
-<<echo=TRUE,print=TRUE>>=
-\begin_inset Newline newline
+\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:"
+literal "false"
+
 \end_inset
 
-1 + 1 
-\begin_inset Newline newline
+
+\end_layout
+
 \end_inset
 
-1 + pi
-\begin_inset Newline newline
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+and
+\end_layout
+
 \end_inset
 
-sin(pi/2)
-\begin_inset Newline newline
+ 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
-Now we look at Gaussian data:
+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
 
-\begin_layout Chunk
-<<>>=
-\begin_inset Newline newline
 \end_inset
 
-library(stats)
-\begin_inset Newline newline
-\end_inset
+) for dynamic report generation using the ideas of literate programming.
+ R code can be mixed into a \SpecialChar LaTeX
+ document, and will be executed in R when the
+ document is compiled; the results are written into the \SpecialChar TeX
+ output.
+\end_layout
 
-x <- rnorm(20)
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+Since \SpecialChar 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 \SpecialChar 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
 
-print(x)
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+https://github.com/downloads/yihui/lyx/sweave.pdf
+\end_layout
 
-print(t1 <- t.test(x))
-\begin_inset Newline newline
 \end_inset
 
-@
+.
+\end_layout
+
+\begin_layout Standard
+Since \SpecialChar LyX
+ 2.3, it is necessary to enable the use of 
+\emph on
+needauth
+\emph default
+ converters in
+\family sans
+ Preferences\SpecialChar menuseparator
+File Handling\SpecialChar menuseparator
+Converters
+\family default
+ in order to compile with Sweave.
+\end_layout
+
+\begin_layout Section
+System Requirements
 \end_layout
 
 \begin_layout Standard
-Note that we can easily integrate some numbers into standard text: The third
- element of vector 
+The 
+\family sans
+Sweave
+\family default
+ module depends on the executable 
 \family typewriter
-x
+Rscript
 \family default
- is 
-\begin_inset Flex S/R expression
+, 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
 
-x[3]
+https://github.com/yihui/lyx
 \end_layout
 
 \end_inset
 
-, the 
-\begin_inset Formula $p$
+ 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 Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+where-is-R-bin,eval=FALSE
+\end_layout
+
 \end_inset
 
--value of the test is 
-\begin_inset Flex S/R expression
-status collapsed
+
+\end_layout
 
 \begin_layout Plain Layout
 
-format.pval(t1$p.value)
+R.home('bin')
 \end_layout
 
 \end_inset
@@ -184,26 +364,48 @@ format.pval(t1$p.value)
 \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 famous iris dataset, and we want to see
- the commands in the code chunks:
+After you have done these changes, you need to reconfigure \SpecialChar 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 \SpecialChar 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 Flex Sweave Options
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
 status open
 
 \begin_layout Plain Layout
 
-echo=true,keep.source=true
+sweave-sty,eval=FALSE
 \end_layout
 
 \end_inset
@@ -211,55 +413,146 @@ echo=true,keep.source=true
 
 \end_layout
 
-\begin_layout Chunk
-<<engine=R>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
 
-# A comment
-\begin_inset Newline newline
-\end_inset
+file.path(R.home('share'), 'texmf', 'tex', 'latex')
+\end_layout
 
-data(iris)
-\begin_inset Newline newline
 \end_inset
 
-summary(iris)
-\begin_inset Newline newline
-\end_inset
 
-@ % def
 \end_layout
 
 \begin_layout Standard
-\begin_inset Float figure
-placement tbph
-wide false
-sideways false
-status collapsed
+Mik\SpecialChar TeX
+ users may add the texmf directory to the list of root directories in
+ Mik\SpecialChar TeX
+ through Mik\SpecialChar TeX
+ 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 \SpecialChar 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 Chunk
-\align center
-<<fig=TRUE>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Section
+Sweave Examples
+\end_layout
 
-library(graphics)
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+Before we write an Sweave document, we can set some Sweave options; the
+ command is 
+\family typewriter
 
-pairs(iris)
-\begin_inset Newline newline
-\end_inset
+\backslash
+SweaveOpts{}
+\family default
+ in Sweave and it can be inserted in a \SpecialChar LyX
+ document by 
+\family sans
+Insert\SpecialChar menuseparator
+Custom Insets\SpecialChar menuseparator
+Sweave Options
+\family default
+, or just use \SpecialChar TeX
+ code to write it (
+\family sans
+Insert\SpecialChar menuseparator
+\SpecialChar 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 \SpecialChar LaTeX
+ document).
+\end_layout
+
+\begin_layout Standard
+To write R code in \SpecialChar LyX
+, you can first insert 
+\family typewriter
+Chunk
+\family default
+ insets from 
+\family sans
+Insert\SpecialChar menuseparator
+Custom Insets\SpecialChar menuseparator
+Chunk
+\family default
+, or you can simply open a \SpecialChar TeX
+ code environment and write Sweave code chunks
+ in it.
+ However, \SpecialChar LyX
+ provides a summary of all the 
+\family typewriter
+Chunk
+\family default
+ insets in the document in the 
+\family sans
+Navigate\SpecialChar menuseparator
+Literate Programming
+\family default
+ and 
+\family sans
+View\SpecialChar menuseparator
+Outline Pane
+\family default
+ menus.
+\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 Flex Chunk
+status open
+
 \begin_layout Plain Layout
-\begin_inset Caption
+
+\begin_inset Argument 1
+status open
 
 \begin_layout Plain Layout
-Pairs plot of the iris data.
+
+setup, keep.source=TRUE
 \end_layout
 
 \end_inset
@@ -267,36 +560,48 @@ Pairs plot of the iris data.
 
 \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
+
 \end_inset
 
 
 \end_layout
 
 \begin_layout Standard
-\begin_inset Float figure
-placement tbph
-wide false
-sideways false
-status collapsed
+\begin_inset Flex Chunk
+status open
 
-\begin_layout Chunk
-\align center
-<<fig=true>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+sweave-manual, eval=FALSE, keep.source=TRUE
+\end_layout
 
-boxplot(Sepal.Length~Species,data=iris)
-\begin_inset Newline newline
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Plain Layout
-\begin_inset Caption
+
+## view the Sweave vignette (requires R >= 2.13.0)
+\end_layout
 
 \begin_layout Plain Layout
-Boxplot of sepal length grouped by species.
+
+vignette("Sweave", package = "utils")
 \end_layout
 
 \end_inset
@@ -304,47 +609,71 @@ Boxplot of sepal length grouped by species.
 
 \end_layout
 
-\end_inset
+\begin_layout Standard
+A simple example that will run in any S engine: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
 
+\begin_layout Plain Layout
 
+print-integers, keep.source=TRUE
 \end_layout
 
-\begin_layout Chunk
-<<engine=S4>>=
-\begin_inset Newline newline
 \end_inset
 
-function.that.comes.only.with.Splus(x)
-\begin_inset Newline newline
+
+\end_layout
+
+\begin_layout Plain Layout
+
+## the integers from 1 to 10 are
+\end_layout
+
+\begin_layout Plain Layout
+
+1:10
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
+\begin_inset Flex Chunk
 status open
 
-\begin_layout Chunk
-\align center
-<<fig=true>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+hide-results, results=hide
+\end_layout
 
-boxplot(Sepal.Length~Species,data=iris)
-\begin_inset Newline newline
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Plain Layout
-\begin_inset Caption
+
+## intentionally hide the output by setting results=hide
+\end_layout
 
 \begin_layout Plain Layout
-Boxplot of sepal length grouped by species
+
+print(1:20)
 \end_layout
 
 \end_inset
@@ -352,9 +681,1086 @@ Boxplot of sepal length grouped by species
 
 \end_layout
 
-\end_inset
+\begin_layout Standard
+We can also emulate a simple calculator: 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
 
+\begin_inset Argument 1
+status open
 
+\begin_layout Plain Layout
+
+calculator
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+1 + pi
+\end_layout
+
+\begin_layout Plain Layout
+
+sin(pi/6)
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Now we look at some Gaussian data:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+rnorm
+\end_layout
+
+\end_inset
+
+
+\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
+
+\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 \SpecialChar LyX
+ menu is 
+\family sans
+Insert\SpecialChar menuseparator
+Custom Insets\SpecialChar menuseparator
+S/R expression
+\family default
+, or alternatively just use \SpecialChar 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 Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+iris-summary
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+summary(iris[,-5])
+\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
+
+
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+xtable-demo,results=tex,echo=FALSE
+\end_layout
+
+\end_inset
+
+
+\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
+
+\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 \SpecialChar 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
+
+
+\end_layout
+
+\begin_layout Plain Layout
+\align center
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+iris-pairs,fig=TRUE,width=4.5,height=4.5,eps=TRUE,pdf=TRUE
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+
+pairs(iris, col = iris$Species)
+\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 Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+iris-boxplots,fig=TRUE,width=7,height=2,keep.source=F,eps=T,pdf=T
+\end_layout
+
+\end_inset
+
+
+\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
+
+\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 \SpecialChar LyX
+ document contains literate programming components
+ with R, so that \SpecialChar LyX
+ will handle such documents according to the specific converter
+s (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 \SpecialChar LyX
+.
+ This script takes an 
+\family sans
+Rnw
+\family default
+ document from \SpecialChar LyX
+ and call Sweave to process it to a \SpecialChar TeX
+ document, then \SpecialChar LyX
+ takes
+ care of the rest of work.
+\end_layout
+
+\begin_layout Standard
+The converter from the 
+\family sans
+sweave
+\family default
+ format to \SpecialChar 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 \SpecialChar LyX
+ library directory 
+\family typewriter
+$$s
+\family default
+ can be found from the menu 
+\family sans
+Help\SpecialChar menuseparator
+About \SpecialChar LyX
+
+\family default
+.
+ All the rest of options passed to R are explained in the R script, and
+ the \SpecialChar 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 \SpecialChar 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 \SpecialChar 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 \SpecialChar LaTeX
+ cannot find 
+\family sans
+Sweave.sty
+\family default
+, this R script will copy it to the temporary directory automatically where
+ the \SpecialChar 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 "https://www.lyx.org/trac/ticket/7551"
+literal "false"
+
+\end_inset
+
+) is that if the filename (without extension) contains dots, \SpecialChar 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
+\SpecialChar 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 \SpecialChar 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 issue with the \SpecialChar TeX
+ code environment is the Sweave code chunk may fail
+ when we change the alignment of the chunk paragraph in \SpecialChar LyX
+ (using 
+\family sans
+Paragraph settings
+\family default
+), because \SpecialChar 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.
+ This does not happen when using the Chunk inset instead of the \SpecialChar TeX
+ code environmen
+t.
+\end_layout
+
+\begin_layout Section
+Resources
+\end_layout
+
+\begin_layout Standard
+The user manual of Sweave is at 
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+https://stat.ethz.ch/R-manual/R-devel/library/utils/doc/Sweave.pdf
+\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 \SpecialChar LyX
+ and Sweave can be posted to the \SpecialChar LyX
+ mailing list (
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+https://www.lyx.org/MailingLists
+\end_layout
+
+\end_inset
+
+).
+ More \SpecialChar 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 \SpecialChar LaTeX
+ errors if you use Sweave in normal beamer slides in
+ \SpecialChar 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 \SpecialChar LyX
+
+\family default
+).
+ Note \SpecialChar 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 \SpecialChar LyX
+ library directory directly,
+ since updating \SpecialChar 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