Связывая R и Джулию?



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



Так:




  • что есть ли там средства для соединения R и Джулии?

  • насколько они надежны и хорошо продуманы, по шкале от нуля до Rcpp?


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

533   7  

7 ответов:

The RJulia R пакет выглядит довольно хорошо теперь от R. R CMD check работает без предупреждений или ошибок (если julia правильно установлен).

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

обратите внимание, что Дуг Бейтс предупредил меня о RCall двунаправленный интерфейс от Джулии к R (т. е. в другом направлении, чем R к Джулии). Кроме того, Дуг рекомендовал чтобы нацелиться на Джулию 0.4.0 а не текущие стабильные версии Юлии.

Я тоже Я смотрю на Джулию с тех пор, как Дуг Бейтс прислал мне предупреждение в январе. Но, как и @gsk3, я измеряю это по "шкале Rcpp", поскольку я хотел бы передать богатые объекты R Джулии. И это, кажется, не поддерживается вообще сейчас.

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

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

и в конце концов, может потребоваться некоторое терпение. Я начал смотреть на R около 1996 или 1997 года, когда Фриц Лейш сделал первые объявления на comp.ОС.Линукс.анонс группы новостей. И тогда у R были довольно ограниченные возможности (но полное обещание языка S, Конечно, si мы знали, что у нас есть победитель). И через несколько лет я был готов сделать его своим основным языком моделирования. В то время у КРЭНА было еще меньше 100 пакетов...

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

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

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

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

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

https://github.com/armgong/RJulia

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

Я создаю пакет 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 упаковка пакетов Джулия пакеты с помощью JuliaCall, например,

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

Добро пожаловать для любой обратной связи на JuliaCall!!

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

Comments

    Ничего не найдено.