Julia semble très prometteuse pour un calcul rapide et syntaxique (par exemple ici ), mais je soupçonne que cela ne sera pas près de R en termes de flux de travail statistique global pendant un certain temps encore. Je voudrais donc l'utiliser là où C ++ est principalement utilisé dans les programmes R: pour optimiser les portions lentes de code. Avant d'investir le temps dans l'apprentissage de Julia, cependant, je suis curieux de savoir quelles sont les possibilités d'incorporer des extraits de Julia dans du code R.
Alors:
- Quelles sont les installations disponibles pour relier R et Julia?
- Dans quelle mesure sont-ils robustes et bien pensés, sur une échelle de zéro à Rcpp?
Je veux appeler Julia depuis R, tout comme Rcpp permet d'appeler C ++ à partir de R dès maintenant. Je ne veux pas appeler R de Julia. (Donc RCall.jl ne fonctionnerait pas)
Réponses:
Le package RJulia R semble assez bon maintenant à partir de R.
R CMD check
s'exécute sans avertissements ni erreurs (s'iljulia
est correctement installé).Le plus gros TODO à mon avis est d'amener Julia à renvoyer des listes nommées qui constituent la structure de données générale flexible vraiment basique dans R.
Notez que Doug Bates m'a alerté à propos de RCall une interface bidirectionnelle de Julia à R (c'est-à-dire, l'autre direction que R vers Julia). De plus, Doug a recommandé de cibler julia 0.4.0 plutôt que les versions stables actuelles de julia.
la source
Moi aussi, je regarde Julia depuis que Doug Bates m'a envoyé un avertissement en janvier . Mais comme @ gsk3, je mesure cela sur une "échelle Rcpp" car je voudrais passer des objets R riches à Julia. Et cela ne semble pas du tout pris en charge pour le moment.
Julia a une interface C agréable et simple. Donc, cela nous donne quelque chose comme
.C()
. Mais comme récemment discuté sur r-devel, vous ne voulez vraiment pas.C()
, dans la plupart des cas, vous voulez plutôt.Call()
passer des variables SEXP réelles représentant des objets R réels. Donc, pour le moment, je vois peu de possibilités pour Julia de R à cause de cette limitation.Peut-être qu'une interface indirecte utilisant tcp / ip vers Rserve pourrait être un premier départ avant que Julia ne mûrisse un peu et que nous obtenions une interface C ++ appropriée. Ou nous utilisons quelque chose basé sur Rcpp pour passer de R à C ++ avant d'entrer dans une couche intermédiaire [que quelqu'un devrait écrire] à partir de laquelle nous alimentons les données de Julia, tout comme l'API R actuelle n'offre qu'une couche C. Je sais pas.
Et à la fin de la journée, un peu de patience peut être nécessaire. J'ai commencé à regarder R vers 1996 ou 1997 lorsque Fritz Leisch a fait les premières annonces sur le newsgroup comp.os.linux.announce. Et R avait alors des installations plutôt limitées (mais la pleine promesse du langage S, bien sûr, si nous savions que nous avions un gagnant). Et quelques années plus tard, j'étais prêt à en faire mon principal langage de modélisation. À cette époque, CRAN avait encore bien moins de 100 colis ...
Julia pourrait bien y arriver. Mais pour l'instant, je soupçonne que beaucoup d'entre nous travailleront en R et n'auront que quelques aperçus curieux de Julia.
la source
Le plan de développement de Julia, comme je l'ai décrit dans cette réponse, est de permettre la compilation du code Julia dans des bibliothèques partagées, appelables à l'aide de l'ABI C. Une fois que cela se produit, il sera aussi facile d'appeler du code Julia à partir de R que d'appeler du code C / C ++. Il y a, cependant, une bonne quantité de travail requise avant que cela ne devienne possible.
la source
Une mise à jour rapide. Depuis que cette question a été posée, il y a eu les débuts d'un package Julia qui permet d'appeler des programmes R depuis Julia.
Plus ici: https://github.com/lgautier/Rif.jl
la source
Quelqu'un at-il vu ce projet?
https://github.com/armgong/RJulia
Assez nouveau mais semble faire exactement ce qui est demandé!
la source
Je crée un package R appelé
JuliaCall
récemment, qui intègre Julia dans R. Le package est sur CRAN.https://cran.r-project.org/web/packages/JuliaCall/index.html
https://github.com/Non-Contradiction/JuliaCall
L'utilisation du package est comme ceci:
Comme vous pouvez le voir, vous pouvez envoyer des chaînes de commande et appeler des fonctions Julia très facilement.
Et il existe également des packages R enveloppant des packages Julia en utilisant
JuliaCall
, par exemple,convexjlr
pour la programmation convexe disciplinée dans R en utilisant Convex.jl, qui est également sur CRAN.ipoptjlr
, une interface R pour OPTimizer Interior Point (IPOPT) utilisant le package JuliaIpopt.jl
.Bienvenue pour tout commentaire sur
JuliaCall
!!la source
Il existe également le package XRJulia de la famille de packages XR visant à e X tend R de John Chambers (l'un des créateurs de R). Il utilise une approche un peu différente (JSON) pour transférer des données entre Julia et R puis rJulia et des packages similaires.
la source
Vous voudrez peut-être également consulter ma tentative: le
JuliaConnectoR
package R. Le package est disponible sur GitHub et CRAN .Son objectif est d'importer des fonctions de Julia directement dans R afin qu'elles puissent être utilisées comme des fonctions R dans le code R. Les valeurs de retour des fonctions Julia sont traduites en structures de données R, qui peuvent être utilisées dans R et également renvoyées à Julia. Pour une intégration plus poussée de Julia et R, il est également possible de rappeler de Julia à R en passant des fonctions R en tant que fonctions de rappel.
Semblable à XRJulia, JuliaConnectoR repose sur TCP, mais il est orienté fonctionnellement et utilise un format de diffusion personnalisé optimisé au lieu de messages JSON basés sur du texte comme le fait XRJulia. Un avantage de la communication par TCP est la stabilité vis-à-vis des différentes versions de Julia et R. C'est beaucoup plus difficile à maintenir avec une intégration au niveau des interfaces C comme le font RCall et JuliaCall.
Le package fonctionne avec Julia ≥ 1.0 et une large gamme de versions R.
la source