2012-04-01 4 views
108

Julia выглядит очень многообещающим для быстрого и синтаксического вычисления (например, here), но я подозреваю, что он не будет нигде рядом с R с точки зрения общего рабочего процесса статистики еще некоторое время. Поэтому я хотел бы использовать его, где C++ в основном используется в R-программах: оптимизировать медленные части кода. Прежде чем инвестировать время в изучение Джулии, мне любопытно, какие существуют средства для встраивания фрагментов Джулии в код R.Ссылка на R и Julia?

Итак:

  • Какие средства находятся там для соединения R и Юлю?
  • Насколько прочны и продуманны они по шкале от нуля до Rcpp?

Я хочу назвать Julia из R, так же как Rcpp позволяет вызывать C++ изнутри R прямо сейчас. Я не хочу называть R от Джулии. (Так RCall.jl не работал)

+6

Мое предположение * заключается в том, что вы были бы очень ранним усыновителем и подверглись бы этим наказаниям. Я был бы счастлив ошибаться - я был бы рад, если бы вы сделали эту работу и подготовили для нас среднего усыновления ... –

+2

Почему бы просто не использовать NumPy? – Marcin

+14

Функции, которые они используют в тестах производительности, кажутся довольно необычным способом использования R: https://github.com/JuliaLang/julia/blob/master/test/perf/perf.R. Это похоже на то, чтобы поставить дизель в Феррари ... – James

ответ

25

RJulia [https://github.com/armgong/RJulia] R пакет выглядит довольно хорошо теперь от R. R CMD check работает без предупреждений или ошибок (если julia правильно установлен).

Самый большой TODO на мой взгляд, чтобы Юлю вернуться именованные списки, которые составляют основную действительно гибкую структуру общих данных в R.

Обратите внимание, что Дуг Бейтс предупредил меня о RCall [https://github.com/JuliaStats/RCall.jl] двунаправленный интерфейс с Джулия к R (т. Е. Другое направление, чем R, к Джулии). Кроме того, Дуг рекомендовал ориентироваться на julia 0.4.0, а не на текущие стабильные версии julia.

50

I тоже have been looking at Julia ever since Doug Bates sent me a heads-up in January. Но, как и @ gsk3, я измеряю это на «шкале Rcpp», поскольку я хотел бы передать богатые объекты R в Julia. И это, похоже, сейчас не поддерживается.

У Джулии есть приятный и простой интерфейс C. Так что получается что-то вроде .C(). Но, как недавно обсуждалось на r-devel, вы действительно не хотите .C(), в большинстве случаев вы предпочитаете .Call(), чтобы передавать фактические переменные SEXP, представляющие реальные объекты R. Поэтому сейчас я вижу мало возможностей для Джулии из R из-за этого ограничения.

Возможно, косвенный интерфейс с использованием tcp/ip для Rserve может быть первым запуском до того, как Джулия созревает немного, и мы получим правильный интерфейс на C++. Или мы используем что-то, основанное на Rcpp, чтобы перейти от R к C++ до того, как мы введем промежуточный уровень [который кто-то должен будет писать], из которого мы передаем данные Julia, так же, как фактический R API предлагает только слой C. Не знаю.

И в конце дня может потребоваться некоторое терпение. Я начал смотреть на R примерно в 1996 или 1997 году, когда Фриц Лейш сделал первые анонсы в группе новостей comp.os.linux.announce. И у R были довольно ограниченные возможности (но полное обещание языка S, конечно же, мы знали, что у нас был победитель). И несколько лет спустя я был готов сделать его основным языком моделирования. В то время у CRAN было еще менее 100 упаковок ...

Джулия вполне может попасть туда. Но на данный момент я подозреваю, что многие из нас получат работу в R, и у Джулии всего лишь несколько любопытных проблесков.

+1

, поскольку, насколько мне известно, планов нет для julia чтобы статический компилятор разрешал встраивание в C++, нам, возможно, придется подождать некоторое время – pyCthon

41

План развития Julia, как я описал в this answer, - это возможность компиляции кода Julia для общих библиотек, вызываемых с использованием C ABI. Как только это произойдет, будет легко вызвать код Julia из R, поскольку он должен вызвать код C/C++. Тем не менее, требуется большая работа, прежде чем это станет возможным.

+3

Это звучит очень многообещающе. Я (и, как мне кажется, другие) видит Джулию как отличную замену тому, как Matlab в настоящее время используется - для тяжелых вычислений, которые по-прежнему требуют большей математической интуиции, чем C и ее ilk. Для этого R и Julia могли быть удивительным дополнением. Даже если Джулия вытеснит R (и я буду в порядке с этим, честно говоря), это будет, по крайней мере, за десять лет до того, как статистическая библиотека в Джулии будет где-то близка к богатству, так что между тем возможности взаимодействия между R и Julia могут помочь открыть - источники статистических вычислений. –

+6

Сменила ли эта ситуация с тех пор, как вы написали это? (p.s. Я любя * Юля, спасибо за твою работу!) –

19

Быстрое обновление. Поскольку этот вопрос был задан, начался пакет Julia, который позволяет называть R-программы из Джулии.

Подробнее здесь: https://github.com/lgautier/Rif.jl

+1

Спасибо, но см. комментарии от самого lgautier выше. Это противоположное направление. Я хочу называть Джулию изнутри Р. –

+4

+1, потому что в такой узкой теме, как Джулия, вся информация довольно информативна. – Qbik

+0

Как @ AriB.Friedman сказал, что это не новая информация - и все мы хотим называть Джулию из R, а не другой способ вокруг. –

10

Кто-нибудь видел этот проект?

https://github.com/armgong/RJulia

довольно новый, но, кажется, делает именно то, что просят!

+4

Спасибо за подсказку. Действительно, это было бы решением, если бы это сработало. Я попытался установить (используя очень текущий R 3.1.2 исправленный) и julia (0.4.0-dev .. обновлен 30 декабря 2014 года как пакет ubuntu). Тогда компиляция не удалась, и я открыл github-вопрос https://github.com/armgong/RJulia/issues/10. Будем надеяться, что мы доберемся дальше ... скоро –

+1

Любой прогресс? Я получаю довольно активные уведомления о развитии из своего реплива github, поэтому я бы подумал, что проблемы сглажены ... – Adam

+2

Действительно! Здесь не прослеживалось - но на странице проблем выше: основные проблемы были удалены. Я вызвался получить пакет ближе к тому, чтобы быть доступным (для CRAN), а именно, добавив полезные страницы справки. Но, к сожалению, я слишком глубоко занят другими делами, поэтому на этот раз мне придется ждать (для меня). –

4

Существует также XRJulia package от XR семейство пакетов, направленных на е X как правило R Джон Чемберс (один из создателей R). Он использует немного другой подход (JSON) для передачи данных между Julia и R, а затем rJulia и аналогичными пакетами.

4

Недавно я создал пакет R, называемый JuliaCall, который встраивает Юлию в R. Пакет находится на CRAN.

https://cran.r-project.org/web/packages/JuliaCall/index.html

https://github.com/Non-Contradiction/JuliaCall

Использование пакета, как это:

library(JuliaCall) 
julia <- julia_setup() 
julia_command("a = sqrt(2)"); julia_eval("a") 
julia_eval("sqrt(2)") 
julia_call("sqrt", 2) 
julia_eval("sqrt")(2) 

Как вы можете видеть, вы можете отправить командные строки и вызывать функции Julia действительно легко.

И есть также некоторые R пакеты и упаковка пакетов Julia с помощью JuliaCall, например,

  • convexjlr для дисциплинированных программирования выпукло в R с использованием Convex.jl, который также находится на CRAN.
  • ipoptjlr, интерфейс R для OPTIimizer для внутренней точки (IPOPT) с использованием пакета Julia Ipopt.jl.

Добро пожаловать на любую отзыву на JuliaCall !!

Смежные вопросы