Есть ли способ добавить Julia, R и python в один текстовый файл, такой как R markdown, или записную книжку, с которой можно было бы работать как с текстовым файлом?

Вкратце: я хотел бы иметь текстовый файл, в котором я мог бы плавно переключаться между R, python и Julia. Важно то, что я ищу способ запуска, а не просто отображения кода

Я знаю, что в R markdown можно добавить python (и многие другие языки) http://goo.gl/4w8XIb, но не уверен, что смогу добавить Юлю. Также можно использовать записные книжки, такие как Beaker http://beakernotebook.com/ со всеми тремя языками (и другими), но мой Проблема с записными книжками заключается в том, что ими не так быстро управлять по сравнению с тем, что можно сделать с текстовым файлом в среде редактора (sublime, emacs, vim, atom ...). Я очень мало знаю о записных книжках, и те, о которых я знаю, представлены в виде файлов json, но манипулирование файлом json для написания отчета почти не требует удобства для пользователя.

Я, наверное, упускаю из виду очевидное, но есть ли другой способ сделать это? Благодарность


person Ricardo Pietrobon    schedule 28.01.2016    source источник
comment
это не ответ, но учитывая широкий спектр языков, для которых были реализованы движки knitr (здесь, это не должно быть так сложно. Более конкретно, загляните в github.com/yihui/knitr/blob/master/R/engine.R на eng_interpreted ...   -  person Ben Bolker    schedule 29.01.2016
comment
спасибо @BenBolker, проблема с R markdown заключается в том, что фрагмент со скриптом python не может видеть объекты из предыдущих фрагментов python, и я боюсь, что то же самое может случиться с Джулией.   -  person Ricardo Pietrobon    schedule 31.01.2016
comment
еще не тестировал, но orgmode.org/worg/org-contrib/babel кажется возможным. Забавно, что я уже какое-то время пользуюсь орг-режимом, а про Вавилон просто забыл   -  person Ricardo Pietrobon    schedule 31.01.2016
comment
Пакет runr Yihui Xie действительно предоставляет решение этой проблемы (я тестировал, что он работает нормально с Python3, но не использовал его широко и не пытался понять, что потребуется, чтобы распространить его на Джулию ...)   -  person Ben Bolker    schedule 31.01.2016
comment
плюс 1 для орг-режима, он делает все, что вы хотите.   -  person Ista    schedule 01.02.2017


Ответы (3)


Недавно я создал пакет R JuliaCall, и его можно использовать в качестве движка julia в документе R Markdown, см. https://non-contraffic.github.io/JuliaCall/articles/JuliaCall_in_RMarkdown.html в качестве примера.

Хотя JuliaCall уже находится на CRAN, эта новая функция все еще находится в разрабатываемой версии на github. Если вы хотите попробовать, используйте

devtools::install_github("Non-Contradiction/JuliaCall")

установить JuliaCall.

Эта функция включает

  1. Несколько блоков julia работают в одном сеансе julia.
  2. Доступ к переменным R, функциям внутри кода julia и наоборот.

Текущее ограничение заключается в том, что он полностью поддерживает только вывод html.

person Consistency    schedule 23.09.2017

Реструктурированный текст хорошо поддерживает примеры кода, где каждая code-block директива может включать соответствующий язык.

.. code-block:: ruby

   Some Ruby code.

Markdown также поддерживает упоминание языка в каждом блоке кода, например:

```javascript
var s = "JavaScript syntax highlighting";
alert(s);
```

```python
s = "Python syntax highlighting"
print s
```

```
No language indicated, so no syntax highlighting. 
But let's throw in a <b>tag</b>.
```
person taleinat    schedule 28.01.2016
comment
спасибо @taleinat, но я искал способ запуска, а не просто отображение кода. Итак, для R markdow я могу добавить скрипты на R и python, и они будут отображать фактические результаты. Я отредактировал свой вопрос, чтобы прояснить это - person Ricardo Pietrobon; 29.01.2016

Я думаю, что Beaker Notebook - действительно очень хорошее решение для ваших нужд. Это многоязычный инструмент, который позволит вам очень хорошо сочетать R, Python и Julia. Есть режим редактирования Vim, который не идеален, но все же довольно быстр. Существуют сочетания клавиш для быстрого выполнения ячеек, выполнения только выбранных строк, а также для перехода между ячейками. Beaker также является разрешенно лицензированным проектом с открытым исходным кодом на GitHub с очень отзывчивым сопровождающим, так что вы можете также вносите любые недостающие функции непосредственно в качестве PR.

person ctrueden    schedule 30.01.2017