Джулия выглядит очень многообещающе для быстрых и синтаксических вычислений (например, здесь ), но я подозреваю, что это не будет где-то рядом с R с точки зрения общего рабочего процесса статистики в течение некоторого времени. Поэтому я хотел бы использовать его там, где C ++ в основном используется в программах на R: для оптимизации медленных частей кода. Прежде чем я потрачу время на изучение Джулии, мне любопытно, какие существуют возможности для встраивания фрагментов Джулии в R-код.
Так:
- Какие есть возможности для связи Р и Джулии?
- Насколько они надежны и хорошо продуманы по шкале от нуля до Rcpp?
Я хочу вызвать Джулию из R, точно так же, как Rcpp позволяет вызывать C ++ из R прямо сейчас. Я не хочу звонить Р от Юлии. (Так что RCall.jl не будет работать)
Ответы:
Пакет RJulia R теперь выглядит неплохо, поскольку R.
R CMD check
запускается без предупреждений или ошибок (еслиjulia
он правильно установлен).Самым большим TODO, на мой взгляд, является заставить Джулию возвращать именованные списки, которые составляют действительно базовую гибкую общую структуру данных в R.
Обратите внимание, что Даг Бейтс предупредил меня о том, что RCall является двунаправленным интерфейсом от Джулии к R (т. Е. В другом направлении, кроме R к Джулии). Кроме того, Дуг рекомендовал использовать julia 0.4.0 вместо текущих стабильных версий julia.
источник
Я тоже смотрю на Джулию с тех пор, как Дуг Бейтс отправил мне хэдз-ап в январе . Но, как и @ gsk3, я измеряю это по «шкале Rcpp», так как я хотел бы передать богатые объекты R Джулии. И это, похоже, сейчас не поддерживается вообще.
У Юлии приятный и простой 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 и увидят всего несколько любопытных взглядов на Джулию.
источник
План разработки Julia, как я описал в этом ответе, состоит в том, чтобы разрешить компиляцию кода Julia в разделяемые библиотеки, которые можно вызывать с помощью C ABI. Как только это произойдет, вызов кода Джулии из R будет так же легок, как и вызов кода C / C ++. Однако для того, чтобы это стало возможным, требуется достаточное количество работы.
источник
Быстрое обновление. С тех пор, как был задан этот вопрос, было начало пакета Julia, который позволяет вызывать R-программы изнутри Julia.
Больше здесь: https://github.com/lgautier/Rif.jl
источник
Кто-нибудь видел этот проект?
https://github.com/armgong/RJulia
Довольно новый, но, кажется, делает именно то, что запрашивается!
источник
Я
JuliaCall
недавно создал пакет R , который встраивает Джулию в R. Пакет находится на CRAN.https://cran.r-project.org/web/packages/JuliaCall/index.html
https://github.com/Non-Contradiction/JuliaCall
Использование пакета примерно так:
Как видите, вы можете легко отправлять строки команд и вызывать функции Джулии.
И есть также некоторые R-пакеты, упаковывающие пакеты Julia с использованием
JuliaCall
, например,convexjlr
для дисциплинарного выпуклого программирования в R с использованием Convex.jl, который также находится в CRAN.ipoptjlr
интерфейс R для OPTimizer внутренней точки (IPOPT) с использованием пакета JuliaIpopt.jl
.Добро пожаловать за любые отзывы о
JuliaCall
!источник
Существует также пакет XRJulia из семейства пакетов XR, нацеленный на e X тенденцию R Джона Чамберса (одного из создателей R). Он использует немного другой подход (JSON) для передачи данных между Julia и R, затем rJulia и аналогичными пакетами.
источник
Вы также можете проверить мою попытку:
JuliaConnectoR
R-пакет. Пакет доступен на GitHub и CRAN .Его цель - импортировать функции из Julia непосредственно в R, чтобы их можно было использовать как R-функции в R-коде. Возвращаемые значения функций Julia переводятся в структуры данных R, которые можно использовать в R, а также передавать обратно в Julia. Для дальнейшей интеграции Джулии и R также возможно перезвонить из Джулии в R, передав функции R в качестве функций обратного вызова.
Подобно XRJulia, JuliaConnectoR использует TCP, но он функционально ориентирован и использует оптимизированный пользовательский формат потоковой передачи вместо текстовых сообщений JSON, как XRJulia. Одним из преимуществ взаимодействия по TCP является стабильность по отношению к различным версиям Julia и R. Это гораздо сложнее поддерживать с помощью интеграции на уровне C-интерфейсов, как это делают RCall и JuliaCall.
Пакет работает с Julia ≥ 1.0 и широким спектром версий R.
источник