Skip to content
Prev 166092 / 398502 Next

Sweave in LATEX

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}
\end{Sinput}
\begin{Soutput}
[1] 2
\end{Soutput}
\begin{Sinput}
\end{Sinput}
\begin{Soutput}
[1] 4.141593
\end{Soutput}
\begin{Sinput}
\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}
\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}
\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}
\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:
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: