[Forgot to cc: the list] Hi.
On Sun, Apr 17, 2011 at 8:04 AM, Kai Ying <yi...@iastate.edu> wrote: > thanks, > It can work but not as elegant as I expect because it add extra code to > every chunk of code. > I have tried the cache for this purpose it works in most case but have a lot > of other problems so I decided to control it by myself. > I guess that sweave running R code before tex, so tex variable do not work > and need find something run before sweave and set the variable, > but it seems currently no way do that. You can do exactly this by embedding your Sweave document with RSP markup, e.g. <% needRun <- TRUE %> <<eval=<%=needRun%>>>= someSlowFunction() @ To compile this into a valid Sweave document/file, you have to append filename extension *.rsp, e.g. report.Rnw.rsp. Then compile it as: library("R.rsp"); rsp("report.Rnw.rsp", postprocess=FALSE); which outputs a file report.Rnw containing: <<eval=TRUE>>= someSlowFunction() @ If you also want to run Sweave on this and generate a PDF you can do everything in one go (using the default postprocess=TRUE): library("R.rsp"); rsp("report.Rnw.rsp"); RSP is a context-independent markup, i.e. it does not care what format the underlying document has, as long as it is text based. Hope this helps /Henrik > Write my own Sweave driver is too > hard for me hope in the future someone can refine the sweave driver. > best wishes > > On Sun, Apr 17, 2011 at 7:30 AM, Duncan Murdoch > <murdoch.dun...@gmail.com>wrote: > >> On 11-04-17 2:41 AM, Kai Ying wrote: >> >>> hello: >>> Do any one know how to set sweave option by variable, for example I >>> want >>> set some of my selected code chunk with: >>> <<eval=needRun>>= rather than<<eval=TRUE>>=, so I can change the action >>> only in the head by change the variable "needRun" one times. >>> I have tried use "\Def" and "\newcommand", both do not work, so I suppose >>> it >>> is related with R/Sweave its self. >>> thanks for any good suggestion. >>> >>> >> You can't do that, but you can get a similar effect this way: >> >> <<echo=FALSE>>= >> needRun <- TRUE >> @ >> >> ... >> >> <<thecode,eval=FALSE>>= >> someSlowFunction() >> @ >> >> <<echo=FALSE>>= >> if (needRun) { >> <<thecode>> >> } >> @ >> >> Or you could use cacheSweave or weaver for caching, which may do what you >> want, or write your own Sweave driver to do exactly what you want. >> >> Duncan Murdoch >> > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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@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.