Marc,>I have a large .Rnw file and was in the process of doing some debugging. >I had set some R chunks to 'eval=false' in the process. This resulted in >some R objects not being created that were in turn used in the >subsequent \Sexpr's.I have often the same problem, I'm using a construct like : <<eval=F>>x <- rnorm(100) @ I have \Sexpr{ifelse(exists("x"), length(x), "???")} elements in vector x. This works well for me, and you have more control than a global \SweaveOpts{eval.Sexpr=false} would allow, for instance : <<TimeConsumingCodeChunk1,eval=F>>x <- rnorm(100) ... @ I have \Sexpr{ifelse(exists("x"), length(x), "Ooops, I forgot to evaluate TimeConsumingCodeChunk1")} elements in vector x. Wouldn't it be enough to mention this in Sweave's FAQ ? Best, Jean -- Jean R. Lobry (lobry at biomserv.univ-lyon1.fr) Laboratoire BBE-CNRS-UMR-5558, Univ. C. Bernard - LYON I, 43 Bd 11/11/1918, F-69622 VILLEURBANNE CEDEX, FRANCE allo : +33 472 43 27 56 fax : +33 472 43 13 88 http://pbil.univ-lyon1.fr/members/lobry/
[shameless plug] Jean lobry <lobry at biomserv.univ-lyon1.fr> writes:> <<TimeConsumingCodeChunk1,eval=F>>> x <- rnorm(100) > ... > @ > > I have \Sexpr{ifelse(exists("x"), length(x), "Ooops, I forgot > to evaluate TimeConsumingCodeChunk1")} elements in vector x.For the case of TimeConsumingCodeChunks, another solution is the weaver package that caches the results of such chunks. So you could have: <<TimeConsumingCodeChunk1, cache=TRUE>>x <- rnorm(100) ... @ Then as long as the dependencies of the expressions in TimeConsumingCodeChunk1 don't change, it won't be recomputed. Best, + seth
Marc Schwartz (via MN)
2006-Sep-21 16:15 UTC
[Rd] Sweave processes \Sexpr in commented LaTeX source
On Thu, 2006-09-21 at 16:08 +0200, Jean lobry wrote:> Marc, > > >I have a large .Rnw file and was in the process of doing some debugging. > >I had set some R chunks to 'eval=false' in the process. This resulted in > >some R objects not being created that were in turn used in the > >subsequent \Sexpr's. > > I have often the same problem, I'm using a construct like : > > <<eval=F>>> x <- rnorm(100) > @ > > I have \Sexpr{ifelse(exists("x"), length(x), "???")} elements > in vector x. > > This works well for me, and you have more control than a global > \SweaveOpts{eval.Sexpr=false} would allow, for instance : > > <<TimeConsumingCodeChunk1,eval=F>>> x <- rnorm(100) > ... > @ > > I have \Sexpr{ifelse(exists("x"), length(x), "Ooops, I forgot > to evaluate TimeConsumingCodeChunk1")} elements in vector x. > > Wouldn't it be enough to mention this in Sweave's FAQ ?Jean, Thanks for your comments and approach. I will keep it in mind. In my case, I had a large flow/org type chart that I created with pstricks and there were quite a few Sexpr's in the chart code. All of the Sexpr's were based upon common objects created in preceding R chunks. I considered that it would be easier to simply treat it all as a common block that could be commented. Based upon Fritz' reply today, it seems that we will have an easier solution coming. Best regards, Marc