[R] Sweave in LATEX
Gabor Grothendieck
ggrothendieck at gmail.com
Tue Jan 6 17:49:39 CET 2009
Another thing to try is placing Sweave.sty in the same directory
as your .Rnw file and experiment with and without
\usepackage{Sweave}
in your .Rnw file.
On Tue, Jan 6, 2009 at 11:39 AM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> 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.
>>>
>>>
>>
>
> ______________________________________________
> 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