Связывая R и Джулию?
Юлия выглядит очень перспективной для быстрого и синтаксически-вменяемого вычисления (например здесь), но я подозреваю, что он еще не будет где-то рядом с R с точки зрения общего рабочего процесса статистики в течение некоторого времени. Поэтому я хотел бы использовать его там, где C++ в основном используется в R-программах: для оптимизации медленных частей кода. Однако, прежде чем я инвестирую время в изучение Джулии, мне любопытно, какие средства существуют для встраивания фрагментов Джулии в R-код.
Так:
- что есть ли там средства для соединения R и Джулии?
- насколько они надежны и хорошо продуманы, по шкале от нуля до Rcpp?
Я хочу позвонить Джулии из R, так же как Rcpp позволяет вызывать C++ из R прямо сейчас. Я не хочу звонить R от Джулии. (Так RCall.компания не будет работать)
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) с использованием пакета JuliaIpopt.jl.Добро пожаловать для любой обратной связи на
JuliaCall!!
есть еще пакет XRJulia С XR семейство пакетов, направленных на eXкак правило R Джон Чемберс (один из создателей R). Он использует немного другой подход (JSON) для передачи данных между Julia и R, а затем rJulia и аналогичными пакетами.
Comments