[R] Sweave in LATEX
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Jan 6 17:39:12 CET 2009
Your example works for me. I'd guess there's a problem with the way you
handled Sweave.sty, but I don't really know what it would be. Can't you
tell MikTex to use the Sweave file from its original location, using
-include_directory?
Duncan Murdoch
On 1/6/2009 10:48 AM, Mr Derik wrote:
> 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.
>>
>>
>
More information about the R-help
mailing list