> >On 11/11/2009 12:09 PM, Pfaff, Bernhard Dr. wrote: >> Dear list subscriber, >> >> suppose, I do have a minimal Sweave file 'test.Rnw': >> \documentclass{article} >> \begin{document} >> <<printx>>= >> x >> @ >> \end{document} >> >> >> Within R, I define the following function: >> >> f <- function(x){ >> Sweave("test.Rnw") >> } >> >> The call: >> >> f(x = 1:10) >> >> results in the following error message: >> >>> f(x = 1:10) >> Writing to file test.tex >> Processing code chunks ... >> 1 : echo term verbatim (label=printx) >> >> Error: chunk 1 (label=printx) >> Error in eval(expr, envir, enclos) : object 'x' not found >> >> In principle, I could assign x to the global environment and >then the Sweave file will be processed correctly: >> >>> f2 <- function(x){ >> + attach(list(x = x)) >> + Sweave("test.Rnw") >> + } >>> f2(x = 1:10) >> Writing to file test.tex >> Processing code chunks ... >> 1 : echo term verbatim (label=printx) >> >> You can now run LaTeX on 'test.tex' >>> >> >> Kind of a dum question, but how could it be achieved that >Sweave recognizes the objects within this function call? > >The way you did it is close. You can attach all the local >variables by >using > >attach(environment()) > Dear Duncan,
many thanks for your swift reply and pointers. >though global variables will take precedence, because attach puts the >environment 2nd in the search list. And you'd better remember >to detach >them. > sure. >I'd say it's better to make Sweave files self-contained, so >that you can >run R CMD Sweave outside of R, and get the right results. Right, this is ordinarily the way I proceed, too. But, now, I would like to include "ready-made" Sweave reports in a package, e.g. /inst/reports/template1.Rnw, and provide a function, say reportgen(), with which a user can be provide his objects that are then used within the Sweave file(s). But if you >really want to do this, then you can write your own Sweave driver and >replace the default RweaveEvalWithOpt with a function that looks >elsewhere for variables. > Having said the above, I think that this will be the route to take and indeed in RweaveEvalWithOpt is the line: res <- try(withVisible(eval(expr, .GlobalEnv)), silent = TRUE) which needs to be adjusted. Best, Bernhard >Duncan Murdoch > >> >> Any pointers are most welcome, >> Bernhard >> >>> sessionInfo() >> R version 2.10.0 (2009-10-26) >> i386-pc-mingw32 >> >> locale: >> [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 >> [3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C >> [5] LC_TIME=German_Germany.1252 >> >> attached base packages: >> [1] stats graphics datasets utils grDevices >methods base >> >> other attached packages: >> [1] fortunes_1.3-6 >>> >> >> Dr. Bernhard Pfaff >> Director >> Global Quantitative Equity >> >> Invesco Asset Management Deutschland GmbH >> An der Welle 5 >> D-60322 Frankfurt am Main >> >> Tel: +49 (0)69 29807 230 >> Fax: +49 (0)69 29807 178 >> www.institutional.invesco.com >> Email: bernhard_pf...@fra.invesco.com >> >> Geschäftsführer: Karl Georg Bayer, Bernhard Langer, Dr. Jens >Langewand, Alexander Lehmann, Christian Puschmann >> Handelsregister: Frankfurt am Main, HRB 28469 >> Sitz der Gesellschaft: Frankfurt am Main >> >> ***************************************************************** >> Confidentiality Note: The information contained in this >...{{dropped:10}} >> >> ______________________________________________ >> 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.