¿Vinculando a R y Julia?


Julia parece muy prometedor para el cálculo rápido y de sintaxis sana (por ejemplo, aquí), pero sospecho que no será en ningún lugar cerca de R en términos de flujo de trabajo de estadísticas generales durante algún tiempo todavía. Así que me gustaría usarlo donde C++ se usa principalmente en programas R: para optimizar porciones lentas de código. Sin embargo, antes de invertir el tiempo en aprender Julia, tengo curiosidad por saber qué facilidades hay para incrustar fragmentos de Julia en código R.

Así que:

  • ¿Para qué están las instalaciones? ¿vinculando a R y Julia?
  • ¿Qué tan robustos y bien pensados son, en una escala de cero a Rcpp?

Quiero llamar a Julia desde R, al igual que Rcpp permite llamar a C++ desde R en este momento. No quiero llamar a R de Julia. (Así que RCall.jl no funcionaría)

 118
Author: Lyndon White, 2012-04-01

7 answers

El paquete RJulia R se ve bastante bien ahora desde R. R CMD check se ejecuta sin advertencias ni errores (si julia está instalado correctamente).

Lo más importante en mi opinión es conseguir que Julia devuelva las listas nombradas que constituyen la estructura de datos general flexible realmente básica en R.

Tenga en cuenta que Doug Bates me alertó sobre RCall una interfaz bidireccional de Julia a R (es decir, la otra dirección que R a Julia). Además, Doug recomendó apuntar a julia 0.4.0 en lugar de las versiones estables actuales de Julia.

 32
Author: Martin Mächler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-30 08:23:27

Yo también he estado mirando a Julia desde que Doug Bates me envió un aviso en enero . Pero como @gsk3, mido esto en una "escala Rcpp" ya que me gustaría pasar objetos Rich a Julia. Y eso no parece ser apoyado en absoluto en este momento.

Julia tiene una interfaz C agradable y simple. Así que nos da algo como .C(). Pero como se discutió recientemente en r-devel, realmente no quieres .C(), en la mayoría de los casos prefieres .Call() para pasar variables SEXP reales representando objetos R reales. Así que ahora veo poco margen para Julia de R debido a esta limitación.

Tal vez una interfaz indirecta usando tcp/ip para Rserve podría ser un primer comienzo antes de que Julia madure un poco y obtengamos una interfaz C++ adecuada. O usamos algo basado en Rcpp para obtener de R a C++ antes de ingresar una capa intermedia [que alguien tendría que escribir] desde la que alimentamos los datos a Julia, al igual que la API de R real solo ofrece una capa de C. No sé.

Y al final del día, un poco de paciencia puede ser necesaria. Empecé a mirar R alrededor de 1996 o 1997 cuando Fritz Leisch hizo los primeros anuncios en el borrador.operativo.linux.anunciar grupo de noticias. Y R tenía instalaciones bastante limitadas entonces (pero la promesa completa de la lengua S, por supuesto, si sabíamos que teníamos un ganador). Y unos años más tarde estaba listo para convertirlo en mi lenguaje de modelado principal. En ese momento CRAN todavía tenía mucho menos de 100 paquetes...

Julia bien podría llegar allí. Pero por ahora sospecho muchos de nosotros conseguiremos el trabajo hecho en R, y tendremos apenas algunas ojeadas curiosas en Julia.

 52
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-01 20:12:54

El plan de desarrollo de Julia, como describí en esta respuesta es permitir la compilación de código de Julia a bibliotecas compartidas, llamables usando la ABI de C. Una vez que esto sucede, será tan fácil llamar al código de Julia desde R como llamar al código de C/C++. Hay, sin embargo, una buena cantidad de trabajo necesario antes de que esto sea posible.

 45
Author: StefanKarpinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:23

Una actualización rápida. Desde que se hizo esta pregunta, ha habido los inicios de un paquete Julia que permite llamar a programas R desde Julia.

Más aquí: https://github.com/lgautier/Rif.jl

 20
Author: aviks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-02 18:10:04

¿Alguien ha visto este proyecto?

Https://github.com/armgong/RJulia

Bastante nuevo, pero parece estar haciendo exactamente lo que se solicita!

 11
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-08 11:10:50

Recientemente he creado un paquete R llamado JuliaCall, que integra a Julia en R. El paquete está en CRAN.

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

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

El uso del paquete es así:

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)

Como puede ver, podría enviar cadenas de comandos y llamar a las funciones de Julia muy fácilmente.

Y también hay algunos paquetes de R que envuelven paquetes de Julia usando JuliaCall, para ejemplo,

  • convexjlr para la Programación Convexa Disciplinada en R usando Convexo.jl, que también está en CRAN.
  • ipoptjlr, una interfaz R para el Optimizador de puntos Interiores (IPOPT) usando Julia package Ipopt.jl.

Bienvenido para cualquier comentario sobre JuliaCall!!

 7
Author: Consistency,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-05 17:34:48

También existe el paquete XRJulia de XR familia de paquetes que apuntan a e X tend R de John Chambers (uno de los creadores de R). Utiliza un enfoque un poco diferente (JSON) para transferir datos entre Julia y R, luego rJulia y paquetes similares.

 4
Author: vh-d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-17 12:31:18