Писать большие документы с помощью свитера. Можно ли сделать так же, как с латексом?


Я только открываю Sweave и R. Я видел несколько примеров документов Sweave и также начал писать один или два самостоятельно. Я впечатлен способностью выполнять вычисления в R и выводить результаты непосредственно в документе LaTeX.

Теперь я думаю о более крупных документах (как это обычно бывает с LaTeX), которые состоят из нескольких страниц и нескольких частей. С помощью LaTeX (я использую WinEdt) я устанавливаю основной документ (например, main.tex), а затем имею другие вспомогательные документы как будто introduction.tex, discussion.tex и т.д.

Мой вопрос: Можем ли мы сделать это и с Sweave? Теперь я работаю с одним документом Sweave (.Rnw) один. Можем ли мы иметь несколько документов Sweave (с одним основным и второстепенными), как мы обычно делаем с LaTeX?

Обходной путь состоял бы в том, чтобы иметь отдельные Sweave файлы, а затем использовать их для создания R LaTeX куски, которые можно скопировать в документ LaTeX, но тогда вся идея кажется довольно неэффективной и трудоемкой.

Пожалуйста, сообщите, какие у вас есть предложения и решения.

Большое спасибо...

3 24

3 ответа:

Вот что очень хорошо работает для меня:

У меня есть один мастер-файл ("master.Rnw"), который не имеет текста, а служит только для сбора файлов (глав, разделов), которые в конечном итоге образуют документ.

Затем у меня есть один файл с кодом R, который повторно используется в различных других файлах ("func.Rnw"). Здесь у меня много именованных кусков

<<my_fun_1,eval=FALSE,echo=FALSE>>=
# code:
c <- a * b
@

В Мастере.Rnw, первое, что я делаю после \begin{document}, это

\SweaveInput{func.Rnw}

И оттуда у меня есть мои именованные куски. В файле "chap1.Rnw" теперь я могу иметь

<<echo=FALSE>>=
a <- 10
b <- 25
<<my_fun_1>>
c
@

Конечно, я должен

\SweaveInput{chap1.Rnw})

В мастера.РНВ.

Мне нужно только \Sweave{master.Rnw}, а затем pdflatex результирующий мастер.tex-файл, без копирования / вставки или обработки нескольких файлов.

Я просто пишу статью из 60 + страниц с примерно 25 таблицами и цифрами, и пока все работает отлично.

Надеюсь, это поможет, Райнер

Я использую Sweave, чтобы написать книгу примерно из 16 глав. Я согласен, что использование makefile с несколькими файлами Rnw-хорошая идея. Еще одна приятная вещь, связанная с этим подходом, заключается в том, что make можно запускать параллельно (-p Я думаю), поэтому в зависимости от того, как объекты главы зависят друг от друга, вы можете запускать много кода одновременно.

Единственное, что изменило меня, - это кэширование. Некоторые из моих фрагментов кода могут работать в течение нескольких дней, но не изменились за время написания книги. Есть несколько пакетов, которые позволяют сохранять результаты при запуске и повторно запускать фрагмент только в том случае, если объекты, от которых зависит фрагмент, изменились.

Для этого существует несколько пакетов. Смотрите:

Http://cran.r-project.org/web/views/ReproducibleResearch.html

Я использую форму пакета weaver Bioconductor.

Пока я на свалке мозгов... если у вас есть более одного автора, я обнаружил, что общий аккаунт Dropbox является отличным способом поддержания проект.

Макс

Я рекомендую использовать RStudio (http://www.rstudio.com/ide/) вместо WinEdt. Sweave хорошо интегрирован в эту IDE, и, как и в WinEdt, вы можете установить один файл в качестве главного файла. Из главного файла вы можете включить дочерние файлы, используя

\SweaveInput{Child.Rnw}

Вы можете связать дочерний файл с главным файлом, включив директиву

% !Rnw root = Master.Rnw

В дочернем файле. Таким образом, работая над дочерним файлом и набирая его, RStudio знает, как набирать главный файл.

В подробности описаны в документации RStudio по адресу http://www.rstudio.com/ide/docs/authoring/multiple_rnw_files

Самая приятная особенность заключается в том, что навигация по журналам ошибок Synctex и TeX все еще работает даже при работе с многофайловыми документами.