[R] problem using cat within Sweave code chunks when fig=TRUE

Wolfgang Huber huber at ebi.ac.uk
Mon Aug 25 13:15:17 CEST 2008


Hi Paul,

You could

<<label=codechunk1a,fig=TRUE,include=FALSE>>=
plot(1:10)
@
<<label=codechunk1b>>=
cat("figure1.eps caption goes here \n",file="readme.txt",append=T)
cat("figure1.pdf caption goes here \n",file="readme.txt",append=T)
@

You can suppress one of the three executions by setting eps=FALSE in the 
code chunk options or in the document-wide \SweaveOpts
settings.

I would also be interested what the third execution is good for.

Also, if you set both eps=FALSE and pdf=FALSE, the code chunk is not 
shown in the (.tex) output, not graphic output file is produced, but the 
chunk still seems to be executed once.

  best wishes
	Wolfgang




Paul.Rustomji a csiro.au wrote:
> Hello R list
> 
> I was intending to use a cat statement within Sweave code chunks that
> generate greaphs to generate a readme.txt file listing all the figures
> generated with a brief caption along the lines of:
> 
> desired format of "readme.txt"
> _________________________________
> figure1.eps   caption for figure1
> figure1.pdf   caption for figure1
> figure2.eps   caption for figure2
> figure2.pdf   caption for figure2
> _________________________________
> 
> 
> As an example, this block of sweave code replicates what I would like to
> do in principle:
> 
> 
> <<label=codechunk1,fig=TRUE,include=FALSE>>=
> plot(1:10)
> cat("figure1.eps caption goes here \n",file="readme.txt",append=T)
> cat("figure1.pdf caption goes here \n",file="readme.txt",append=T)
> @
> 
> 
> <<label=codechunk2,fig=TRUE,include=FALSE>>=
> plot(11:20)
> cat("figure2.eps caption goes here \n",file="readme.txt",append=T)
> cat("figure2.pdf caption goes here \n",file="readme.txt",append=T)
> @
> 
> which I originally though would produce the desired result, however, the
> cat statement appears to get executed three times producing: 
> 
> readme.txt---
> figure1.eps caption goes here 
> figure1.pdf caption goes here 
> figure1.eps caption goes here 
> figure1.pdf caption goes here 
> figure1.eps caption goes here 
> figure1.pdf caption goes here 
> figure2.eps caption goes here 
> figure2.pdf caption goes here 
> figure2.eps caption goes here 
> figure2.pdf caption goes here 
> figure2.eps caption goes here 
> figure2.pdf caption goes here 
> 
> I have figured out that any sweave code with fig=TRUE appears to be
> executed multiple times (up to three), presumably to write to both eps
> and pdf graphics devices (not sure what the first/last execution does
> though...).  
> 
> Does anyone have any ideas about how to only execute the cat statements
> the first time around so that the output looks like what I specified at
> the top of this message?
> 
> Paul
> 
> 
> Paul Rustomji
> Rivers and Estuaries
> CSIRO Land and Water
> GPO Box 1666
> Canberra ACT 2601
> 
> ______________________________________________
> R-help a 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