hoverinfo - ¿Enlazando a R y Julia?
r plotly axis format (7)
Julia parece muy prometedora para el cálculo rápido y sintaxis (por ejemplo, here ), pero sospecho que no estará cerca de R en términos de flujo de trabajo de estadísticas generales desde hace 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 sobre Julia, tengo curiosidad por las facilidades que existen para insertar fragmentos de Julia en el código R.
Asi que:
- ¿Qué recursos hay para vincular a R y Julia?
- ¿Qué tan robustos y bien pensados son, en una escala de cero a Rcpp?
Quiero llamar a Julia desde R, del mismo modo que Rcpp permite llamar a C ++ desde R ahora mismo. No quiero llamar a R de Julia. (Entonces RCall.jl no funcionaría)
¿Alguien ha visto este proyecto?
https://github.com/armgong/RJulia
¡Bastante nuevo, pero parece estar haciendo exactamente lo que se solicita!
Creo un paquete R llamado JuliaCall
recientemente, que JuliaCall
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, puede enviar cadenas de comandos y llamar a las funciones de Julia muy fácilmente.
Y también hay algunos paquetes R que envuelven paquetes Julia usando JuliaCall
, por ejemplo,
-
convexjlr
para la Programaciónconvexjlr
Disciplinada 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 por cualquier comentario sobre JuliaCall
!!
El plan de desarrollo de Julia, como lo describí en esta respuesta, es permitir la compilación del código de Julia a las bibliotecas compartidas, que se pueden llamar usando el C ABI. Una vez que esto sucede, será tan fácil llamar al código de Julia desde R como lo es llamar al código C / C ++. Sin embargo, se requiere una gran cantidad de trabajo antes de que esto sea posible.
También está el paquete XRJulia de la familia de paquetes XR objetivo de e X tender R por 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.
Una actualización rápida. Desde que se hizo esta pregunta, ha habido un comienzo de un paquete de Julia que permite llamar a los programas R desde dentro de Julia.
Más aquí: github.com/lgautier/Rif.jl
Yo también he estado mirando a Julia desde que Doug Bates me envió un aviso en enero . Pero al igual que @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 ahora.
Julia tiene una interfaz C agradable y simple. Entonces eso nos da algo como .C()
. Pero como se discutió recientemente en r-devel, realmente no se quiere .C()
, en la mayoría de los casos se prefiere .Call()
para pasar las variables SEXP reales que representan objetos R reales. Así que ahora veo poco margen para Julia de parte de R debido a esta limitación.
Tal vez una interfaz indirecta que usa tcp / ip para Rserve podría ser un primer inicio antes de que Julia madure un poco y obtengamos una interfaz C ++ adecuada. O utilizamos algo basado en Rcpp para pasar de R a C ++ antes de ingresar a una capa intermedia [que alguien debería escribir] desde la cual alimentamos datos a Julia, al igual que la API real solo ofrece una capa C. No sé.
Y al final del día, puede ser necesaria cierta paciencia. Comencé a mirar a 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 tenemos un ganador). Y unos años después, estaba listo para convertirlo en mi principal lenguaje de modelado. En ese momento CRAN todavía tenía mucho 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 unos curiosos destellos de Julia.
El RJulia
[ https://github.com/armgong/RJulia ] R se ve bastante bien ahora desde R. R CMD check
funciona sin advertencias o errores (si julia
está instalada correctamente).
El TODO más grande en mi opinión es hacer que Julia devuelva listas nombradas que constituyen la estructura de datos generales flexible realmente básica en R.
Tenga en cuenta que Doug Bates me alertó sobre RCall
[ https://github.com/JuliaStats/RCall.jl ] una interfaz bidireccional de Julia a R (es decir, la otra dirección que no sea R a Julia). Además, Doug recomendó apuntar a julia 0.4.0 en lugar de a las versiones estables actuales de julia.