Liste de ressources pour le package purrr

purrr récursif logiciel R

Très récemment, je discutais avec une étudiante, qui voulait progresser dans la programmation R, de l’intérêt du package purrr pour optimiser ses codes. En réalité, je n’ai pas pu aller très loin dans mes explications, et mes démonstrations, parce que je maîtrise pas du tout ce package !

Cette conversation a été un peu frustrante, mais finalement salutaire parce qu’elle m’a décidé à enfin franchir le pas, et à commencer à apprendre à utiliser purrr. C’est dans cette optique que j’ai fait une petite recherche des ressources qui me paraissent particulièrement intéressantes pour débuter cet apprentissage, disponibles gratuitement, en français et en anglais ! C’est cette première liste que je partage dans cet article. Mais avant de passer à la liste, voyons ce qu’est ce package purrr, et un exemple d’utilisation.

1. Mais c’est quoi ce package purrr ?

Pour celles et ceux qui ne le connaissent pas, purrr est un package dédié à la programmation fonctionnelle. Ses fonctions principales sont les fonctions map() (map(), map_chr(), map_dbl(), map_dfr(), etc…), elles permettent d’appliquer une même fonction (ou une même
série de fonctions) à chaque élément d’un ensemble (les colonnes d’un data frame, ou les éléments d’une list par exemple). En gros, ces fonctions map() permettent de remplacer les boucles for() avantageusement en termes de nombre de lignes de code et de temps de calcul (parce que ces fonctions reposent sur la récursivité).

Certains vont me dire : ce n’est pas ce que faisaient déjà les fonctions apply() (lapply(), sapply(), tapply()) ?

Si !

Mais, il parait que dans certains contextes leurs sorties sont imprévisibles (voir ici pour un exemple avec sapply(). De plus, les fonctions map() sont tidyverse compatibles. On peut donc les utiliser à la suite d’autres commandes en utilisant le pipe %>%, et ça c’est un gros avantage !

Pour une bonne introduction à la programmation fonctionnelle, et aux différences entre les boucles for(), les fonctions apply() et les fonctions map(), je vous recommande de lire la deuxième partie de l‘articleLearning Functional Programming & purrr” de Paul van der Laken

 

Pour ce qui concerne son chargement dans R, le package purrr peut être chargé avec le package tidyverse :

Ou de façon spécifique, comme ceci :

 

2. Exemple

Voici un exemple de code, qui utilise les fonctions map() et map_dfr(), et qui permet de réaliser, en 7 lignes, toutes les régressions linéaire simples d’une variable réponse en fonction de chacune des variables explicatives , et, à l'aide de la fonctiontidy()du packagebroom`, de récupérer les informations
suivantes :

  • le nom de chaque variable explicative
  • le coefficient de la pente
  • l’erreur standard de la pente
  • la statistique du test d’égalité à 0 de la pente
  • la p-value du test

Et de classer les résultats par p-values croissantes !

Ici le code est appliqué au données mtcars qui sont directement disponibles dans R (il n’est pas nécessaire de les charger).

 

 

 

C’est assez fantastique, non ?

 

3.Les Ressources

 3.1 La cheat sheet

Le package purrr dispose d’une cheat sheet (Apply Functions Cheat) , téléchargeable ici.

 

package purrr logiciel R

3.2 En français :

 

3.3 En anglais

 

4. Conclusion

Si comme moi, vous débutez dans l’utilisation de ce package purrr, j’espère que cette liste de ressources vous sera utile !

Pour ceux qui ont déjà franchis le pas, dites moi en commentaire ce qui vous a posé le plus de difficultés, et aujourd’hui quelle est, ou quelles sont les fonctions qui vous utilisez le plus souvent ? Si vous connaissez d’autres ressources particulièrement intéressantes ou pédagogiques, n’hésitez pas à me les indiquer.

Et si cet article vous a plus, n’oubliez pas de le partager 😉

 

Image par Gerhild Klinkow de Pixabay

 

Poursuivez votre lecture :

Partager l'article
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

7 commentaires

  1. kora's Répondre

    Bonjour Claire Della Vedova pour ce travail ingénieux et formatif. Merci pour tout ce que tu fais

  2. Simon Répondre

    Merci Claire pour ce mémo sur purrr
    Si vous pouviez expliciter les lignes de code de votre exemple, ça serait super.
    Nicolas

    • Claire Della Vedova Auteur de l’articleRépondre

      Bonjour Simon,

      dés que je serai plus à l’aise avec ces fonctions map(), c’est promis !

  3. Hakim Répondre

    Merci bien Claire de ce travail fort utile qui nous épargne les tracasseries de codage.

  4. Denis-Robert MPUTU Répondre

    Bonjour Claire
    Félicitations pour votre esprit d’ouverture et merci pour cet article.

  5. BERNARDIN Répondre

    BONJOUR CLAIRE , MERCI POUR VOS COURS MAIS J’AI DU MAL A LES TÉLÉCHARGER.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *