I am just discovering Sweave
and R
. I have seen some examples of Sweave
documents and have also started to write one or two on my own. I a
Here is what works very well for me:
I have one master file ("master.Rnw") that has no text but only serves to collect the files (chapters, sections) which form the document in the end.
Then I have one file with R code that is being reused in various other files ("func.Rnw"). Here, I have lot of named chunks
<<my_fun_1,eval=FALSE,echo=FALSE>>=
# code:
c <- a * b
@
In master.Rnw, the first thing after \begin{document} I do is
\SweaveInput{func.Rnw}
and from there, I have my named chunks available. In a file "chap1.Rnw" I can now have
<<echo=FALSE>>=
a <- 10
b <- 25
<<my_fun_1>>
c
@
Of course, I have to
\SweaveInput{chap1.Rnw})
into master.Rnw.
I only have to \Sweave{master.Rnw}
and then pdflatex the resulting master.tex file, no copying/ pasting or processing of multiple files.
I'm just writing a paper of 60+ pages with about 25 tables and figures and everything works perfectly well so far.
Hope this helps, Rainer
I'm using Sweave to write a book with about 16 chapters. I agree that using a makefile with multiple Rnw files is a good idea. One other nice thing abut this approach is that make can be run in parallel (-p I think), so depending on how the chapter's objects depend on each other, you can run a lot of code simultaneously.
The thing that has made a difference for me is caching. Several of my code chunks can run for days but have not changed over the course of writing the book. There are a few packages that allow you to save the results when it is run and only re-run the chunk if the objects that the chunk depends on have changed.
There are a few packages to do this. See:
http://cran.r-project.org/web/views/ReproducibleResearch.html
I use the weaver package form Bioconductor.
While I'm on a brain dump... if you have more than one author, I found that a shared Dropbox account is an excellent way of maintaining the project.
Max
I recommend using RStudio (http://www.rstudio.com/ide/) instead of WinEdt. Sweave is nicely integrated into that IDE and, as in WinEdt you can set one file as the master file. From the master file you can include child files using
\SweaveInput{Child.Rnw}
You can link a child file back to the master file by including the directive
% !Rnw root = Master.Rnw
in the child file. That way when working on a child file and typesetting it, RStudio know to typeset the master file.
The details are explained in the RStudio documentation at http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files
The nicest feature is that Synctex and TeX error log navigation still work even when working with multi-file documents.