La liaison R et Julia?
Julia semble très prometteur pour rapide et la syntaxe-sane calcul (par exemple ici), mais je soupçonne que ce ne sera pas n'importe où près de la R en termes de statistiques de flux de travail pour un certain temps encore. Donc je voudrais l'utiliser où C++ est principalement utilisé dans les programmes de R: pour optimiser la lenteur des portions de code. Avant d'investir du temps dans l'apprentissage de Julia, cependant, je suis curieux de savoir ce que les installations il y a pour l'incorporation de Julia extraits de R code.
Donc:
- Quelles sont les installations pour la liaison R et Julia?
- Comment robuste et bien pensé sont-ils, sur une échelle de zéro à Rcpp?
Je veux l'appeler Julia de R, tout comme Rcpp permet d'appeler le C++ à partir de l'intérieur de R maintenant. Je ne veux pas appeler la R de Julia. (Donc RCall.jl ne fonctionnerait pas)
- Ma conjecture est que vous seriez un des pionniers de l'adoption et de l'objet de ces pénalités. Je serais heureux d'être de travers, je serais également heureux de vous avoir à faire le travail et de préparer la voie pour nous moyen des adoptants ...
- Pourquoi ne pas simplement utiliser NumPy?
- Les fonctions qu'ils utilisent dans les tests de performance semblent comme une jolie manière inhabituelle à utiliser R: github.com/JuliaLang/julia/blob/master/test/perf/perf.R. C'est presque comme de mettre du diesel dans une Ferarri...
- c'est probablement parce qu'ils sont Julia experts, pas de la R des experts. Il serait extrêmement intéressant de voir (comme une question de cours), une comparaison entre les performances de la naïveté et experte/idiomatique codé référence code -- la différence dans la R est plus grand que dans la plupart des langues, je pense ...
- Défi posté le: stackoverflow.com/questions/9968578/...
- La question est pertinente. Un C ABI pour Julia semble émerger. Il y a une chance que je vais avoir un coup de poignard à faire une Julia-de-R de l'interface bientôt.
- J'ai une Julia-de-R bridge environ de travail (github.com/lgautier/Rif.jl). Va dans l'autre sens dépend de travail-toujours-dans-les progrès de la Julia fin.
- êtes-vous toujours à travailler sur le Rif ? Faut-il encore travailler avec les dernières Julia?
- Je n'ai pas eu beaucoup de temps pour y travailler pendant plusieurs mois. Je ne pense pas que cela fonctionne avec les versions actuelles de Julia ou R.
- J'espère sincèrement que vous allez réussir à reprendre votre travail. L'enfer, si il y avait une page kickstarter pour soutenir ceci, je serais sûr d'être là.
- Le lien est rompu - le nouveau semble être github.com/JuliaLang/julia/blob/master/test/perf/micro/perf.R
Vous devez vous connecter pour publier un commentaire.
La RJulia package R semble assez bon maintenant de R.
R CMD check
s'exécute sans avertissements ou des erreurs (sijulia
est correctement installé).Plus grand TODO, à mon avis, est d'obtenir Julia pour revenir nommé listes qui constituent la base vraiment souple générale de la structure des données dans R.
Noter que Doug Bates m'a alerté sur RCall une interface bidirectionnelle de Julia de R (c'est à dire, dans une autre direction que celle du R de Julia). Aussi, Doug recommandé de cibler julia 0.4.0, plutôt que les versions stables de julia.
J'ai trop ont été à la recherche à Julia depuis Doug Bates m'a envoyé un heads-up en janvier. Mais comme @gsk3, je mesure cela sur un "Rcpp échelle" comme je voudrais transmettre riche en R les objets à Julia. Et cela ne semble pas être pris en charge en ce moment.
Julia est une belle et simple C de l'interface. De sorte que nous obtient quelque chose comme
.C()
. Mais comme l'a récemment discuté sur r-devel, vous avez vraiment ne voulez pas.C()
, dans la plupart des cas, vous avez plutôt envie.Call()
afin de passer réelle SEXP variables représentant le réel R des objets. Donc, pour l'instant je vois que peu de place pour Julia de R en raison de cette limitation.Peut-être indirectement à l'utilisation de l'interface tcp/ip pour Rserve pourrait être un premier pas avant de Julia mûrit un peu et nous obtenons une bonne interface C++. Ou nous utilisons quelque chose basé sur Rcpp à obtenir à partir de la R de C++ avant de passer une couche intermédiaire [quelqu'un qui aurait à écrire] à partir de laquelle nous avons flux de données à Julia, tout comme la R API propose une C de la couche. Je ne sais pas.
Et la fin de la journée, un peu de patience peut être nécessaire. J'ai commencé à regarder R autour de 1996 ou 1997, lorsque Fritz Leisch fait les premières annonces sur le comp.os.linux.annoncer de groupes de discussion. Et R était plutôt limitée installations (mais toutes les promesses de la langue, bien sûr, si nous savions que nous avions un gagnant). Et quelques années plus tard, j'étais prêt à le faire, mon premier langage de modélisation. À l'époque CRAN a encore du chemin à moins de 100 paquets...
Julia pourrait bien y arriver. Mais pour l'instant je pense que beaucoup d'entre nous obtenir le travail fait dans R, et ont juste un peu curieux aperçus à Julia.
L'Julia plan de développement, comme je l'ai décrit dans cette réponse est pour permettre la compilation de Julia code de bibliothèques partagées, appelable à l'aide de la C ABI. Une fois que cela arrive, il sera aussi facile d'appeler Julia code de R que c'est l'appel de code C/C++. Il est, cependant, une bonne quantité de travail nécessaire avant que cela ne devienne possible.
Une mise à jour rapide. Depuis que cette question a été posée, il y a eu un début de Julia package qui permet de R les programmes à partir de Julia.
Plus ici: https://github.com/lgautier/Rif.jl
Quelqu'un a vu ce projet?
https://github.com/armgong/RJulia
Assez nouveau, mais semble être en train de faire exactement ce qui est demandé!
- Je créer un package R appelé
JuliaCall
récemment, qui l'intègre Julia dans R. Le paquet est sur CRAN.https://cran.r-project.org/web/packages/JuliaCall/index.html
https://github.com/Non-Contradiction/JuliaCall
L'utilisation de l'emballage est comme ceci:
Comme vous pouvez le voir, vous pouvez envoyer des chaînes de commande et à appeler Julia fonctions très facilement.
Et il y a aussi quelques packages R emballage Julia packages à l'aide de
JuliaCall
, par exemple,convexjlr
pour Disciplinée de Programmation Convexe dans R en utilisant Convexe.jl, qui est également sur CRAN.ipoptjlr
, une R de l'Interface de Point Intérieur de l'Optimiseur (IPOPT) à l'aide de Julia paquetIpopt.jl
.De bienvenue pour tous vos commentaires sur
JuliaCall
!!Il y a aussi le XRJulia paquet de XR famille de paquets visant à eXont tendance R par John Chambers (l'un des créateurs de R). Il utilise approche un peu différente (JSON) pour transférer des données entre Julia et R puis rJulia et paquets similaires.
Vous pourriez également vouloir vérifier ma tentative: La JuliaConnector R-package.
Le but est d'importer des fonctions de Julia directement dans R tels qu'ils peuvent être utilisés comme des fonctions de R dans R code. Les valeurs de retour de Julia fonctions sont convertis à R structures de données, qui peut être utilisé dans la R et aussi être transmis à Julia. Cela fonctionne déjà de façon stable pour les structures de données de base. Le paquet est encore qu'en version 0.1, mais je suis activement à le développer et à le plan est d'avoir un prêt à la production de produits d'ici la fin de 2019.
Pour une intégration plus poussée de Julia et R, il est aussi possible de faire appel de retour de Julia pour R en passant par la R des fonctions comme des fonctions de rappel.
Similaire à XRJulia, le JuliaConnectoR s'appuie sur TCP, mais il est fonctionnel, orienté et utilise un personnalisé optimisé format de streaming à la place du texte à base de messages JSON comme XRJulia n'.
Un des avantages de la communication par TCP est la stabilité à l'égard des différentes versions de Julia et R. C'est beaucoup plus difficile à maintenir avec une intégration au niveau de C interfaces comme RCall et JuliaCall faire.
Le paquet fonctionne avec Julia ≥ 0,7 et un large éventail de R versions.