mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-13 14:32:04 +00:00
4130ab15c6
* "platex" fails with "inputencoding default", if there is text in other languages. "jis-platex" works fine, "jis-utf8" fails with German Umlauts (maybe more). * The expert setting "inputencoding default" switches the inpute encoding with language switches without marking this in the LaTeX source. It is rarely required (if ever) and makes documents easy to break. It is not required for AMS Books, Simple CV, ... (probabely a tex2lyx issue). "utf8" and "auto" work fine.
1768 lines
28 KiB
Plaintext
1768 lines
28 KiB
Plaintext
#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
|
||
\language_package auto
|
||
\inputencoding auto
|
||
\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 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 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 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
|
||
\html_math_output 0
|
||
\html_css_as_file 0
|
||
\html_be_strict false
|
||
\end_header
|
||
|
||
\begin_body
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Note Note
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Flex Sweave Options
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
prefix=TRUE,prefix.string=sweave-prefix,keep.source=FALSE
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\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 \SpecialChar 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:"
|
||
literal "false"
|
||
|
||
\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 \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
|
||
|
||
\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
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
https://github.com/downloads/yihui/lyx/sweave.pdf
|
||
\end_layout
|
||
|
||
\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
|
||
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 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
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
R.home('bin')
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
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 Chunk
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\begin_inset Argument 1
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
sweave-sty,eval=FALSE
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
file.path(R.home('share'), 'texmf', 'tex', 'latex')
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
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 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 \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 Argument 1
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
setup, keep.source=TRUE
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\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 Flex Chunk
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\begin_inset Argument 1
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
sweave-manual, eval=FALSE, keep.source=TRUE
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\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
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\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
|
||
|
||
\end_inset
|
||
|
||
|
||
\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 Flex Chunk
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\begin_inset Argument 1
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
hide-results, results=hide
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\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
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\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
|
||
\end_document
|