Tâches concernées et recommandations
Vous souhaitez réaliser une tâche qui n’est pas décrite dans la documentation utilitR
. Vous souhaitez donc déterminer si un package déjà existant répond à votre besoin et si vous pouvez l’utiliser.
Choisir les packages qu’on utilise dans un programme est une tâche très importante et délicate. Il est normal d’y consacrer du temps. Pour rechercher un package adapté à une tâche, privilégier :
Vous pouvez utiliser un package dans un programme si les deux critères suivants sont remplis :
- le package apporte réellement quelque chose à votre programme (rapidité d’exécution, simplicité et concision du code, simplification de tâches complexes…) ;
- le package présente un niveau de risque suffisamment faible.
Le niveau de risque doit être d’autant plus faible que le package sera utilisé souvent et pendant une longue période. Il faut donc être plus exigeant pour les packages utilisés durablement en production que pour les packages utilisés pour une étude ponctuelle.
Vous pouvez évaluer le risque que présente l’utilisation d’un package grâce à l’analyse de différentes dimensions :
- l’opportunité ;
- la qualité de la documentation ;
- la facilité d’utilisation ;
- la popularité et la communauté d’utilisateurs ;
- la réactivité de la maintenance ;
- la qualité des développements ;
- la réputation des auteurs.
Utiliser un package n’est pas un choix anodin
Utiliser des packages vous permet de gagner en productivité et de réaliser simplement des opérations complexes. Une des forces de l’écosystème R
est le grand nombre de packages développés par des utilisateurs, qui enrichissent le langage de base et proposent des fonctions supplémentaires qui couvrent un éventail extrêmement large de tâches. En pratique, il est aujourd’hui inenvisageable (et inefficace) de mener un projet avec R
sans faire appel à des packages. La preuve en est qu’une large part de la présente documentation porte sur les packages qui répondent aux besoins courants des statisticiens.
Toutefois, l’utilisation d’un package présente aussi des inconvénients. En effet, utiliser un package ajoute une dépendance au programme qu’on est en train d’écrire, ce qui est une source de fragilité. Les packages suivent un cycle de vie et peuvent se situer dans une phase où ils sont encore susceptibles d’évoluer : par exemple, une nouvelle version d’un package peut déprécier une fonction, ou en modifier le fonctionnement interne, et briser ainsi votre programme ; un package peut également être retiré du CRAN si son auteur ne souhaite plus le maintenir. Un code peut donc être fonctionnel au moment où on l’écrit, et ne plus fonctionner quelques mois plus tard si un des packages qu’il utilise a évolué .
Étant donné qu’un package peut lui-même dépendre d’autres packages, l’utilisation d’un seul package peut engendrer un nombre important de dépendances en cascade, et donc autant de sources de fragilité pour vos programmes. Pour trouver l’ensemble des dépendances d’un package, on peut utiliser la fonction tools::package_dependencies()
. Voici comment trouver l’ensemble des dépendances du package rmarkdown
:
$rmarkdown
[1] "bslib" "evaluate" "fontawesome" "htmltools" "jquerylib"
[6] "jsonlite" "knitr" "methods" "tinytex" "tools"
[11] "utils" "xfun" "yaml" "base64enc" "cachem"
[16] "fastmap" "grDevices" "lifecycle" "memoise" "mime"
[21] "rlang" "sass" "digest" "highr" "stats"
[26] "cli" "glue" "fs" "R6" "rappdirs"
Le point essentiel est donc le suivant : le simple fait qu’un package fasse (ou semble faire) ce que vous voulez n’est pas une raison suffisante de l’utiliser, surtout si votre programme doit rester fonctionnel pendant une longue période. Déterminer si on peut utiliser un package revient à faire un arbitrage entre avantages et inconvénients, et à évaluer le risque d’instabilité d’un package. De multiples facteurs permettent d’apprécier qualitativement ce risque.
Chaque nouvelle dépendance doit être ajoutée avec précaution. Il faut donc analyser chacune des dimensions présentées et déterminer si certains facteurs rendent le package inutilisable.
7.3 Comment trouver un package adapté à une tâche
Pour rechercher un package adapté à une tâche, privilégier :
Vous pouvez également rechercher des articles de blog ou poser la question sur des sites d’entraide (RStudio Community, par exemple).
Pour chaque package candidat, il est recommandé d’analyser le contenu du fichier
DESCRIPTION
qui comprend les méta-données du package. Ce fichier est disponible sur le site du CRAN à l’adressehttps://cran.r-project.org/package=nomdupackage
.