SWeave с кусками не-R кода? - PullRequest
7 голосов
/ 17 февраля 2011

Я часто использую Sweave для создания документов LaTeX, в которых определенные фрагменты создаются динамически с помощью кода R.Это хорошо работает, но возможно ли также иметь фрагменты кода, которые выполняются по-разному, например, путем выполнения кода в оболочке, или путем запуска Perl и т. Д.?Было бы полезно иметь возможность смешивать вещи, чтобы я мог выполнять такие вещи, как запуск некоторых команд оболочки для извлечения некоторых данных, запуск некоторых команд perl для предварительной обработки, а затем запуск команд R для их анализа.

Конечно, я мог бы использовать все фрагменты R и использовать system() в качестве заменителя бедняка, но это не очень приятное чтение в документе.

Ответы [ 5 ]

5 голосов
/ 17 февраля 2011

Новая новая документация (для многоязычных, многоформатных) может быть dexy.it , которую, например, эти парни из opengamma.org используют в качестве бэкэнда.

Ана , которая стоит за Dexy, также много говорит об этом, так что также посмотрите на dexy блог .

4 голосов
/ 17 февраля 2011

Это не имеет прямого отношения к Sweave, но org-babel , который является частью Emacs org-mode , позволяет смешивать куски кода разных языков в одном файле, передавать данныеиз одного чанка в другой, выполните их и сгенерируйте экспорт LaTeX или HTML из вывода.

Более подробную информацию о режиме org можно найти здесь:

http://www.orgmode.org/

И посмотреть, как работает орг-бабель:

http://orgmode.org/worg/org-contrib/babel/

3 голосов
/ 17 февраля 2011

Знаете ли вы emacs " org-mode и, более конкретно, Babel ? Если вы уже знакомы с Emacs или хотите перейти на Emacs, тогда режим org-иответ на ваш вопрос (ы).

Например, в настоящее время я работаю над документом, который содержит некоторые сценарии оболочки, выполняет вычисления с R и создает блок-схемы с точкой (graphviz). Org-mode можетэкспортировать различные форматы, например, LaTeX (это то, что я использую).

3 голосов
/ 17 февраля 2011

Конечно, нет простого простого способа сделать это, кроме как через интерфейсы иностранных языков от R (возможно, через inline, если это поддерживается) или system().Для чего бы это ни стоило, я бы просто использовал system();это должно быть достаточно просто.

Вы можете увидеть этот предыдущий вопрос о наличии эквивалента Sweave для Python , где один из респондентов фактически создает отдельный интерфейс.Это может дать вам представление о том, что потребуется для встраивания других языков, которые могут еще не поддерживаться.Как минимум, вы должны серьезно взломать драйвер Sweave.

2 голосов
/ 17 февраля 2011

Есть проект StatWeave, который использует java, а не R для выполнения ткачества, но будет запускать несколько программ вместо просто R. Я не знаю, как трудно было бы заставить его выполнять Perl или другие подобные программы., но на домашней странице указано, что он уже работает с R, SAS, Stata и другими:

http://www.cs.uiowa.edu/~rlenth/StatWeave/

...