jl4R: une vie polyamoureuse entre R et Julia

R(ulia) Drouilhet

https://cqls.dyndoc.fr/jl4R/talk

jl4R (obsolète) remplacé par Rulia, voir https://cqls.dyndoc.fr/Rulia/talk

Introduction

Pourquoi j'aime R et julia?

  • R: (single) dispatching, keyword arguments, simplicité, metaprgrammation, gestionnaire packages unique
  • julia: quasiment la même chose + performance (multiple dispatching, J.I.T. compilation, arbre des Types)

Pourquoi le package jl4R (julia pour R)

  • une évidence (pour moi): julia un UNIQUE langage combinant expressivité du R et performance du C++
  • jl4R (alternative à JuliaCall) pour créer package R de type "wrapper" de package julia sans dépendance à Rcpp et RCall.jl (contrairement à JuliaCall)

jl4R (julia for R)

Utilisation de jl4R

  1. Workflow
    1. Création fonction(s) julia
    2. Appel de fonction(s) julia en R
    3. 3 modes d'utilisation:
      • mode "unsafe" jlvalue
      • mode "safe" jl
      • mode "safe" plus expressif jl+

jl4R: un peu plus loin avec mode jl+

  1. metapgrommation R permet au mode jl+ un format assez similaire au code original julia
  2. pas (ou peu) de chaînes de caractères pour appel de fonction julia

jl4R usage plus avancé en Statistique

  1. conversion data.frame (R) et DataFrame (julia)
  2. conversion factor (R) et CategoricalArrays (julia)

Commentaires

Quelques mots sur développement de jl4R

  1. classe jlvalue comme external pointer
  2. garbage collector de julia appelé dès que "garbage collector" nettoie un objet jlvalue
  3. fonction de classe jlfunction
  4. gestion des erreurs jlexception

Limites de jl4R

  1. jl4R est un package encore (très) expérimental et donc non considéré comme stable
  2. installation dépend (au moins pour l'instant) d'un compilateur (voir site https://github.com/rcqls/jl4R