Julia parece muy prometedora para un cálculo rápido y sintaxis (por ejemplo, aquí ), pero sospecho que todavía no estará cerca de R en términos de flujo de trabajo de estadísticas generales durante algún tiempo. 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 el código R.
Entonces:
- ¿Qué facilidades existen para unir a R y Julia?
- ¿Qué tan robustos y bien pensados son, en una escala de cero a Rcpp?
Quiero llamar a Julia desde R, así como Rcpp permite llamar a C ++ desde R ahora mismo. No quiero llamar a R desde Julia. (Entonces RCall.jl no funcionaría)
Respuestas:
El paquete RJulia R se ve bastante bien ahora desde R. se
R CMD check
ejecuta sin advertencias o errores (sijulia
está instalado correctamente).El mayor TODO en mi opinión es lograr que Julia devuelva listas con nombre que constituyen la estructura de datos generales 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.
fuente
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 R ricos a Julia. Y eso no parece ser compatible en absoluto en este momento.
Julia tiene una interfaz C agradable y simple. Entonces eso nos da algo así
.C()
. Pero como se discutió recientemente en r-devel, realmente no desea.C()
, en la mayoría de los casos, lo que desea es.Call()
pasar variables SEXP reales que representen objetos R reales. Entonces, ahora veo poco margen para Julia de R debido a esta limitación.Tal vez una interfaz indirecta que use 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 pasar de R a C ++ antes de ingresar a una capa intermedia [que alguien tendría que escribir] desde la cual le enviamos datos a Julia, al igual que la API R real solo ofrece una capa C. No sé.
Y al final del día, se puede necesitar un poco de paciencia. Comencé a mirar R alrededor de 1996 o 1997 cuando Fritz Leisch hizo los primeros anuncios en el grupo de noticias comp.os.linux.announce. Y R tenía instalaciones bastante limitadas entonces (pero la promesa completa del lenguaje S, por supuesto, si supiéramos que teníamos un ganador). Y unos años más tarde estaba listo para convertirlo en mi lenguaje principal de modelado. En ese momento, CRAN todavía tenía menos de 100 paquetes ...
Julia bien puede llegar allí. Pero por ahora sospecho que muchos de nosotros haremos el trabajo en R, y solo tendremos algunas miradas curiosas sobre Julia.
fuente
El plan de desarrollo de Julia, como lo describí en esta respuesta, es permitir la compilación del código de Julia en bibliotecas compartidas, que se puede llamar usando el C ABI. Una vez que esto suceda, será tan fácil llamar al código de Julia desde R como llamar al código C / C ++. Sin embargo, se requiere una buena cantidad de trabajo antes de que esto sea posible.
fuente
Una actualización rápida Desde que se hizo esta pregunta, ha habido el comienzo de un paquete de Julia que permite llamar a los programas R desde dentro de Julia.
Más aquí: https://github.com/lgautier/Rif.jl
fuente
¿Alguien ha visto este proyecto?
https://github.com/armgong/RJulia
¡Bastante nuevo pero parece estar haciendo exactamente lo que se solicita!
fuente
Creo un paquete R llamado
JuliaCall
recientemente, que incorpora 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í:
Como puede ver, puede enviar cadenas de comandos y llamar a las funciones de Julia con mucha facilidad.
Y también hay algunos paquetes R que envuelven paquetes de Julia usando
JuliaCall
, por ejemplo,convexjlr
para la programación disciplinada convexa en R usando Convex.jl, que también está en CRAN.ipoptjlr
, una interfaz R para OPTimizer de punto interior (IPOPT) con el paquete JuliaIpopt.jl
.Bienvenido a cualquier comentario sobre
JuliaCall
!!fuente
También está el paquete XRJulia de la familia de paquetes XR cuyo objetivo es e X tender 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.
fuente
También es posible que desee ver mi intento: el
JuliaConnectoR
paquete R. El paquete está disponible en GitHub y CRAN .Su objetivo es importar funciones de Julia directamente en R para que puedan usarse como funciones R en el código R. Los valores de retorno de las funciones de Julia se traducen en estructuras de datos R, que se pueden usar en R y también se pueden devolver a Julia. Para una mayor integración de Julia y R, también es posible volver a llamar de Julia a R pasando funciones de R como funciones de devolución de llamada.
Similar a XRJulia, JuliaConnectoR se basa en TCP, pero está orientado funcionalmente y utiliza un formato de transmisión personalizado optimizado en lugar de mensajes JSON basados en texto como lo hace XRJulia. Una ventaja de comunicarse por TCP es la estabilidad con respecto a las diferentes versiones de Julia y R. Esto es mucho más difícil de mantener con una integración a nivel de interfaces C como RCall y JuliaCall.
El paquete funciona con Julia ≥ 1.0 y una amplia gama de versiones R.
fuente