практически начать с Sweave - PullRequest
3 голосов
/ 21 июля 2010

мои вопросы могут быть менее общими, чем предполагает заголовок.Я использую R на Mac OS X с базой данных MySQL для хранения данных.Я работаю с Komodo / Sciviews-R в течение некоторого времени.Недавно у меня возникла необходимость в автоматически генерируемых отчетах, и я посмотрел на Sweave.Я полагаю, что StatET / Eclipse является «стандартным» решением для Sweavers.

1) Целесообразно ли переключаться с Komodo на StatET Eclipse?Я пробовал StatET раньше, но выбрал Komodo вместо StatET, потому что мне очень понравился calltip / autosuggest и более удобный конфиг от Komodo.

2) Каков разумный рабочий процесс для создания файлов Sweave?Обычно я сначала разрабатываю код R, а потом забочусь о отчете.Сегодня я только что узнал, что в Sweave есть один файл, содержащий R-код и латексный код одновременно, и что из этого файла создается документ .tex.В то время как файлы примеров выглядят легко и не могут даже представить, как ввести мои 250 + строк кода R в файл и смешать его с латексом.

Можно ли просто ввести qplot () и ggplot() заявления для такого документа и источник какой-либо функциональности, такой как соединение с базой данных и промежуточные результаты, как-то?

Или это просто вопрос того, чтобы привыкнуть к смеси латекса и кода R?Спасибо за любые предложения, намеки, ссылки и обратные доводы ...

Ответы [ 3 ]

8 голосов
/ 21 июля 2010

Вы задали несколько вопросов, поэтому вот несколько ответов;

Является ли StatEt / Eclipse правильным способом выполнения Sweave?

Не обязательно (примечание: я заядлый StatEt /Пользователь Eclipse, и используй его как для чистого R, так и для Sweave / R, и мне это нравится, я не использовал Komodo / sciviews-R).Вы должны быть в состоянии выполнить команду sweave из любой командной строки R, которая сгенерирует файл .tex.Затем вы можете превратить файл .tex в нечто читаемое (например, pdf) из любой текстовой среды.

Что такое хороший рабочий процесс Sweave?

Когда я хотел превратить скрипт r в sweaveотчет Обычно я начинаю с пустого шаблона свипирования и копирую / вставляю весь свой R-скрипт в блок свэва R сразу после заголовка, т.е.,Например, если я хочу поместить таблицу в отчет, я обрежу блок R и вставлю блок xtable, и то же самое для переменных и графиков.

<<label=myEntireRScript, echo=false, include=false>>=  
#Insert code here
@ 
Put any text I want before my table here, maybe with a \Sexpr{print(variable)} named variable

<<label=myTable, result=Tex>>= 
myTable<-dataframe(...)
print(xtable(mytable,...),...)
@ 
Any text I want before my figure
<label=myplot, result=figure>>= 
myPlot<-qplot(....)
print(qplot)
@ 
7 голосов
/ 21 июля 2010

Вы можете посмотреть на эти связанные SO сообщений . Остальная часть моего поста относится к вашему вопросу 2.

При создании отчетов с помощью Sweave я обычно держу большую часть кода R и текст отчета отдельно. Если код R работает быстро, я предпочитаю включить в начало файла .Rnw что-то вроде следующего:

<<>>
source('/path/to/script.r')
@

С другой стороны, если код R занимает много времени, я часто буду включать в конец сценария R что-то вроде следующего:

Sweave('/path/to/report.Rnw'); system('pdflatex report.tex')

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

6 голосов
/ 21 июля 2010

Как и nullglob, я предпочитаю хранить файлы R и Sweave отдельно, но я предпочитаю сохранять рабочую область с save.image(), а не source() файлом. Это позволяет избежать выполнения R-вычислений при компиляции каждого файла .Rnw (и я всегда заканчиваю работу с набором текста больше, чем хотелось бы).

Мой общий рабочий процесс заключается в том, чтобы каждый документ / проект находился в отдельной папке со своими собственными R-файлами. Когда сторона вычисления «выполнена», я save.image() сохраню все переменные рабочего пространства как есть.

Затем в файле .Rnw в том же каталоге я установил рабочий каталог с помощью setwd() и загрузил все переменные с помощью load(".Rdata"). Конечно, вы можете изменить имя, которое вы используете для своего рабочего пространства, но я делаю одно рабочее пространство на папку и сохраняю имя по умолчанию. Да, и если вы возитесь с файлом R, обязательно сохраните изображение рабочей области и следите за переменными, которые задерживаются в рабочей области и файле .Rnw, но больше не являются частью файла R ... это где save.image() подход может вызвать некоторые головные боли.

Я работаю на Mac, и я предлагаю TextMate, если вы вежливы, и emacs / ess, если вы действительно вундеркинд. Я использую vim и командную строку R, но emacs / ess работает лучше всего для большинства. Если вы занимаетесь этим в течение длительного времени, я сомневаюсь, что вы пожалеете об изучении emacs / ess для R, Sweave и LaTeX.

...