[R] Sweave in LATEX
Mr Derik
mr418 at cam.ac.uk
Tue Jan 6 16:48:11 CET 2009
Thanks for replying.
I'm working on a windows XP sp3 PC.
I am trying to run the test file provided by R at the moment:
################################################################
% -*- mode: noweb; noweb-default-code-mode: R-mode; -*-
\documentclass[a4paper]{article}
\title{A Test File}
\author{Friedrich Leisch}
\SweaveOpts{echo=FALSE}
\usepackage{a4wide}
\begin{document}
\maketitle
A simple example that will run in any S engine: The integers from 1 to
10 are
<<print=TRUE>>=
1:10
<<results=hide>>=
print(1:20)
@ % the above is just to ensure that 2 code chunks can follow each other
We can also emulate a simple calculator:
<<echo=TRUE,print=TRUE>>=
1 + 1
1 + pi
sin(pi/2)
@
Now we look at Gaussian data:
<<>>=
library(stats)
x <- rnorm(20)
print(x)
print(t1 <- t.test(x))
@
Note that we can easily integrate some numbers into standard text: The
third element of vector \texttt{x} is \Sexpr{x[3]}, the
$p$-value of the test is \Sexpr{format.pval(t1$p.value)}. % $
Now we look at a summary of the famous iris data set, and we want to
see the commands in the code chunks:
\SweaveOpts{echo=true}
% the following code is R-specific, as data(iris) will not run in Splus.
% Hence, we mark it as R code.
<<engine=R>>=
data(iris)
summary(iris)
@ %def
\begin{figure}[htbp]
\begin{center}
<<fig=TRUE>>=
library(graphics)
pairs(iris)
@
\caption{Pairs plot of the iris data.}
\end{center}
\end{figure}
\begin{figure}[htbp]
\begin{center}
<<fig=true>>=
boxplot(Sepal.Length~Species, data=iris)
@
\caption{Boxplot of sepal length grouped by species.}
\end{center}
\end{figure}
% R is not S-PLUS, hence this chunk will be ignored:
<<engine=S4>>=
function.that.comes.only.with.Splus(x)
@
\end{document}
##################################################
I open in Tinn-R 2.1.1.6. I save it, change the working directory in R to
the one I have the file saved in. Then execute Sweave from R with:
Sweave("C:\\R_folder\\sweave_Test\\Sweave-test-1.rnw")
Which produces the following .tex file:
##################################################
% -*- mode: noweb; noweb-default-code-mode: R-mode; -*-
\documentclass[a4paper]{article}
\title{A Test File}
\author{Friedrich Leisch}
\usepackage{a4wide}
\usepackage{Sweave}
\begin{document}
\maketitle
A simple example that will run in any S engine: The integers from 1 to
10 are
\begin{Schunk}
\begin{Soutput}
[1] 1 2 3 4 5 6 7 8 9 10
\end{Soutput}
\end{Schunk}
We can also emulate a simple calculator:
\begin{Schunk}
\begin{Sinput}
> 1 + 1
\end{Sinput}
\begin{Soutput}
[1] 2
\end{Soutput}
\begin{Sinput}
> 1 + pi
\end{Sinput}
\begin{Soutput}
[1] 4.141593
\end{Soutput}
\begin{Sinput}
> sin(pi/2)
\end{Sinput}
\begin{Soutput}
[1] 1
\end{Soutput}
\end{Schunk}
Now we look at Gaussian data:
\begin{Schunk}
\begin{Soutput}
[1] -2.45376344 0.88169202 0.60153415 -0.34419029 -2.13665627 -0.06469998
0.02702410 0.73846812 -0.49656363
[10] -0.77085572 -0.64614048 0.31631767 -0.52449644 -0.15666901 1.00128172
-1.42788545 0.94008626 1.76111249
[19] -1.38254184 -0.34449613
\end{Soutput}
\begin{Soutput}
One Sample t-test
data: x
t = -0.929, df = 19, p-value = 0.3645
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
-0.7288798 0.2807356
sample estimates:
mean of x
-0.2240721
\end{Soutput}
\end{Schunk}
Note that we can easily integrate some numbers into standard text: The
third element of vector \texttt{x} is \Sexpr{x[3]}, the
$p$-value of the test is \Sexpr{format.pval(t1$p.value)}. % $
Now we look at a summary of the famous iris data set, and we want to
see the commands in the code chunks:
% the following code is R-specific, as data(iris) will not run in Splus.
% Hence, we mark it as R code.
\begin{Schunk}
\begin{Sinput}
> data(iris)
> summary(iris)
\end{Sinput}
\begin{Soutput}
Sepal.Length Sepal.Width Petal.Length Petal.Width
Species
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa
:50
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
versicolor:50
Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica
:50
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
\end{Soutput}
\end{Schunk}
\begin{figure}[htbp]
\begin{center}
\begin{Schunk}
\begin{Sinput}
> library(graphics)
> pairs(iris)
\end{Sinput}
\end{Schunk}
\includegraphics{Sweave-test-1-006}
\caption{Pairs plot of the iris data.}
\end{center}
\end{figure}
\begin{figure}[htbp]
\begin{center}
\begin{Schunk}
\begin{Sinput}
> boxplot(Sepal.Length ~ Species, data = iris)
\end{Sinput}
\end{Schunk}
\includegraphics{Sweave-test-1-007}
\caption{Boxplot of sepal length grouped by species.}
\end{center}
\end{figure}
% R is not S-PLUS, hence this chunk will be ignored:
\end{document}
######################################################
Which does indeed have \usepackage{Sweave} in the preamble. I am trying to
run Latex on this file with a MikTex 2.7 distribution via Texnic Center 1.0.
Initially I couldn't get the file to run at all as latex couldn't find
Sweave.sty, but I took that out of the Sweave package file for R and put it
in my MikTex folder and ran the file name database indexer. Since doing so
latex will run and turn out PDF and PS files that contain the Schunks and
figures just fine, however I do get errors like:
! Undefined control sequence.
l.68 $p$-value of the test is \Sexpr
{format.pval(t1$p.value)}. % $
And if you look at this line in the PDF you see:
format.pval(t1p.value)
the $ having been taken to be the beginning of maths mode.
I ran that segment of code the R by hand, it should return a number like:
0.26149
So for some reason latex can handle most of the Sweave control sequences
such as \begin{Schunk} but doesn't recognise \Sexpr.
I've uploaded the PDF I get, if that is of any help.
Cheers
Matt
-----Original Message-----
From: Duncan Murdoch [mailto:murdoch at stats.uwo.ca]
Sent: Tuesday, January 06, 2009 2:18 PM
To: Mr Derik
Cc: r-help at r-project.org
Subject: Re: [R] Sweave in LATEX
On 1/6/2009 6:44 AM, Mr Derik wrote:
> Hello
>
> I have been setting up my computer to run Sweave. I have got the whole
> thing
> working on example files, except that my MikTex returns an "Undefined
> Control Sequence" error for \Sexpr and my output file contains verbatim
> code
> sequences at the apropriate point in the text rather than the R output.
> The
> rest of the output file is fine with tables, R code sequences and figures
> in
> the right place and correctly formatted. I have searched everywhere for
> advice on what to do about this, any ideas would be gratefully received.
>
You need to give more details. Which version of R are you running? How
are you running Sweave? Are you including \usepackage{Sweave} in your
Sweave document? (This is not always necessary, but is usually a good
idea).
Duncan Murdoch
http://www.nabble.com/file/p21312956/Sweave-test-1.pdf Sweave-test-1.pdf
Duncan Murdoch-2 wrote:
>
> On 1/6/2009 6:44 AM, Mr Derik wrote:
>> Hello
>>
>> I have been setting up my computer to run Sweave. I have got the whole
>> thing
>> working on example files, except that my MikTex returns an "Undefined
>> Control Sequence" error for \Sexpr and my output file contains verbatim
>> code
>> sequences at the apropriate point in the text rather than the R output.
>> The
>> rest of the output file is fine with tables, R code sequences and figures
>> in
>> the right place and correctly formatted. I have searched everywhere for
>> advice on what to do about this, any ideas would be gratefully received.
>>
>
> You need to give more details. Which version of R are you running? How
> are you running Sweave? Are you including \usepackage{Sweave} in your
> Sweave document? (This is not always necessary, but is usually a good
> idea).
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>
--
View this message in context: http://www.nabble.com/Sweave-in-LATEX-tp21308911p21312956.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list