Quand quelqu’un vient me demander des conseils pour débuter, ou effectuer une tâche particulière sous R, une des premières choses que je fais (outre lui conseiller la lecture de mon blog, bien sûr -rire machiavélique-) est de l’aiguiller sur quelques packages que je juge incontournables. En effet, s’il existe des points d’entrée plus généraux dans l’usage de R, avoir quelques points de repère quant aux packages qui simplifient vraiment son usage permet de gagner du temps dans son apprentissage en limitant l’étendue des possibles (dans un premier temps tout du moins!).

A toutes fins utiles, donc, voici la liste de mes incontournables. Il va sans dire que c’est une liste qui est susceptible d’évoluer, non seulement au gré de mes apprentissages, mais aussi au gré des développements de R! D’ailleurs, si vous avez vous-même des packages chouchous que vous n’y voyez pas, n’hésitez pas à me l’indiquer en commentaire!!

Manipulation de données

dplyr: manipulation des tableaux de données

Je l’utilise pour tout ce qui est opération sur les tableaux (c’est-à-dire, tout le temps: quel que soit la nature de mon projet, il implique, à un moment ou un autre, de manipuler un tableau). D’ailleurs, j’avais déjà écrit un billet sur ce package ici (sélectionner des colonnes, filtrer des lignes, faire des tris, faire des regroupements) et (réaliser des jointures).

tidyr: restructuration des tableaux de données

J’utilise tidyr de manière moins systématique, mais il réapparaît tout de même assez régulièrement dans mes scripts pour deux raisons en particulier:

  • les pivots, réalisés à l’aide des fonctions gather() et spread() (désormais remplacées par les plus explicites pivot_longer() et pivot_wider(), respectivement) pour modifier la structure des données. J’avais écrit un paragraphe sur ces fonctions à la fin de ce billet. Vous pouvez aller voir le très bon billet de ThinkR sur le sujet ici.
  • les fonctions nest() et unnest() pour créer des listes-colonnes de jeux de données (une fonctionnalité que j’utilise souvent en conjonction avec le package purrr et la programmation fonctionnelle)

readr: lecture des tableaux de données

Pour lire des tableaux de données depuis des fichiers .csv ou .txt, j’utilise le plus souvent le package readr. Pour vous dire toute la vérité, même: la plupart du temps, si je constate que le fichier que j’essaie d’importer est un peu “spécial”, j’utilise la fonctionnalité “Import Dataset” de RStudio pour explorer les options et me générer la ligne de commande ad hoc (“bouh! la tricheuse!” entends-je certains se récrier dans l’audience), et c’est cette fonctionnalité qui (le plus souvent) me suggère l’usage de readr

Manipulation de données particulières

stringr: Manipulation de chaînes de caractères

Pour tout ce qui est manipulation de chaînes de caractères (qui vont au-delà de paste0()), j’utilise le package stringr. J’avais déjà écrit un billet de blog sur ce package ici ainsi qu’un billet le complétant sur le sujet des expressions régulières ici.

tidytext pour le traitement du langage naturel

Pour traiter du langage naturel (des phrases, des paragraphes, des tweets, etc.) dans des traitements de type lexicométrie, j’utilise le package tidytext. J’y ai consacré un petit paragraphe du “Descriptoire” (un livre en ligne traitant de l’analyse de textes avec R) mais si vous n’avez rien contre une ressource anglophone, les vignettes associées au package (et notamment l’introduction) sont très très bien faites…

lubridate: opérations sur des dates, temps, heures

Ce package permet de gérer (sans trop transpirer) toutes les opérations sur les données de type date, heure, temps, etc. (Lecture, conversion, arrondis, séquences de dates, opérations de type addition-soustraction, etc.). J’ai écrit un billet sur ce sujet ici.

forcats: opérations sur les facteurs (variables catégorielles)

Pour travailler avec les variables catégorielles et notamment pour modifier les noms des différents niveaux (c’est peut-être un détail pour vous, mais pour moi ça veut dire beaucoup), j’utilise forcats. Voici le billet que j’avais écrit à ce sujet.

Graphiques

ggplot2 : réalisation des graphiques

Pour la réalisation des graphiques, bien sûr, je ne jure plus que par ggplot2. J’avais écrit (cela commence à faire un moment) un billet sur le sujet. En plus récent et plus complet, il y a aussi un de mes supports de cours ici, ici, et .

patchwork: combinaison de graphiques

Pour combiner plusieurs graphiques en… patchworks, plus ou moins complexes, selon une syntaxe très intuitive (voir la vignette ici).

Données géographiques et cartographie

sf : données géographiques vectorielles

Pour tout ce qui est manipulation de données géographiques de type données vectorielles, le package sf est non seulement une mine d’or mais il est en plus tidyverse-friendly, c’est-à-dire qu’il fonctionne bien, notamment, avec les packages dplyr et ggplot2… J’ai un (très succinct) support de cours à son sujet ici. En plus détaillé, vous pouvez aller jeter un coup d’oeil à cet article de StatnMap sur le sujet!

raster : données raster, grid

C’est (comme son nom l’indique) le package incontournable pour travailler avec des données de type raster (ou grid). Il est un peu plus ancien que sf et de ce fait les opérations croisant données raster et vectorielles qu’il propose sont plutôt compatibles avec le package sp (le prédecesseur de sf).

tmap: réalisation de cartes

C’est un package qui permet de réaliser des cartes qui sont, au choix, statiques ou interactives. C’est aussi un package qui s’inscrit dans la logique “tidyverse” (malgré quelques différences de syntaxe par rapport à ggplot2). C’est de ce fait le package de cartographie que j’en suis venue à privilégier (parmi de nombreux choix possibles). Cependant, il m’arrive encore de faire appel à d’autres packages (comme leaflet par exemple) quand tmap ne répond pas à un besoin particulier. Par exemple, l’intégration d’une carte produite par tmap dans une appli shiny requiert l’utilisation de commandes que je ne comprends pas trop (mais que je suis malgré tout en mesure d’utiliser, par la grâce de Stack Overflow et du copier-coller ;-)). Or utiliser des choses sans les comprendre, cela me gêne un peu dans certains contextes (par exemple, quand je donne cours!).

Rapports et applications

J’aime partager le fruit de mon dur labeur dans des documents et applications qui permettent à mes interlocuteurs d’explorer les données/rendus/résultats des modèles de manière documentée, explicitée, et parfois interactive… Voilà les outils que j’utilise:

rmarkdown et knitr: rapports tricotés

Pour produire des rapports (c’est-à-dire des documents mêlant un plan, du code R, du texte, des résultats issus de R, des graphiques, etc.), j’utilise les packages rmarkdown et knitr… Vous pouvez consulter ce tutoriel de Claire Della Vedova pour vous aider à vous lancer…

shiny: applications interactives

Pour construire des applications, bien sûr, shiny est le must… Il y a beaucoup de tutos en ligne (à vous de choisir, selon vos préférences, un tuto anglophone/francophone/autre, un support sous forme de video/document/exercices en ligne…), mais à toutes fins utiles, j’ai moi-même un petit support de cours disponible ici -je m’en sers pour donner cours “en vrai” donc c’est plus un aide-mémoire qu’un guide de démarrage, réellement-…

Pour l’instant en tant que “développeuse shiny occasionnelle” je m’en tiens essentiellement à shiny (avec quelquefois quelques additions par exemple colourpicker qui propose un widget pour choisir une couleur) mais je suis très intéressée par le package golem de ThinkR qui permet de modulariser les applis (car, oui, une appli, ça peut vite devenir gros, compliqué et bordélique) et que j’aimerais bien incorporer à mon “workflow” la prochaine fois que j’aurai l’occasion de développer une appli shiny… En plus, chouette, ils ont plein de doc pour s’y mettre…

Itérations

Je ne sais pas trop dans quelle rubrique classer purrr, mais il figure parmi mes nouveaux incontournables depuis maintenant 2 ou 3 ans. J’avais écrit un billet à ce sujet ici De fait, quand on travaille très régulièrement avec dplyr (et des “tibbles”), l’usage de purrr pour remplacer les traditionnelles boucles for est le bienvenu… L’usage de purrr s’accompagne aussi d’un changement de pratiques pour moi puisque j’en viens de plus en plus à écrire mon code “en fonctions”!…

Graphes

Pour analyser des réseaux et produire des graphes (attention, j’ai bien dit graphes, et non graphiques!) j’utilise deux packages de Thomas Lin Pederson:

tidygraph : description et analyse de réseaux

J’en parle succinctement dans ce billet(en promettant un article très prochainement. C’était il y a six mois. Gloups.): tidygraph permet de traiter des données en réseau (qui sont par conséquent structurés d’une manière différente des données “tidy” telles qu’on les connaît, où une ligne=un individu et une colonne=une variable). Ce package s’inscrit très largement dans les principes et la syntaxe du tidyverse.

ggraph : représentation de réseaux en graphes

J’en parle dans ce billet. Ce package permet de représenter des réseaux en graphe en reprenant les principes et les éléments de syntaxe de ggplot2.

Analyses factorielles

Entre FactoMineR et ade4, mon coeur balance… Pourtant, j’aimerais bien être en mesure de trancher une fois pour toute, car pour moi, utiliser deux packages qui font “un peu la même chose mais pas exactement”, ça veut dire que je n’arrive jamais à me rappeler les commandes ni de l’un ni de l’autre.

Cependant, je pense que je n’arriverai jamais à trancher, car si je trouve FactoMineR un peu plus clair, je trouve aussi ade4 un peu plus complet. Quelque part, on retrouve la “patte” des disciplines qui les a vus émerger: plus agronomique (culture méthodique et maîtrisée) côté FactoMineR, plus écologique (écosystème foisonnant et en évolution) côté ade4… (Que les auteurs de ces packages me pardonnent ces clichés, c’est juste comme ça que je m’explique mon “feeling” vis-à-vis de l’un ou de l’autre 😉 ). D’ailleurs, j’ai fait mes études dans une école d’ingénieur agronome, et mon doctorat dans un laboratoire d’écologie, et vous comprendrez donc pourquoi, même d’un point de vue disciplinaire, j’ai du mal à faire mon choix entre ces deux packages…