4.2 Installer et utiliser des packages externes
Dans ce chapitre, nous allons voir comment installer et utiliser des packages externes. Il est fréquent en R de vouloir travailler avec des données qui ne sont représentées par aucune classe existante, ou de manquer de fonctions pour réaliser ce qu'on souhaite faire. En effet, le coeur du langage n'est là que pour couvrir l'essentiel des besoins de bases !
Quand quelqu'un créer un ensemble de fonctions et de classes d'objets qu'il juge utile pour les utilisateurs de R, il peut les regrouper dans un package et les mettre à disposition de la communauté. Ainsi, nous pouvons utiliser les packages existants pour disposer de nouvelles fonctions et classes, au lieu de les re-écrire nous même.
Il existe un nombre très important de packages, qui ont tous des buts différents. Le package carret
est utile pour l'apprentissage automatique de données, quand le package biostats
s'adressera plutôt à des bio statisticiens. Le packages ggplot2
lui fournira des fonctions pour réaliser de magnifique graphique et est très utilisé. Au fur et à mesure de votre progression en R, vous apprenderez à connaitre les packages les plus courants.
Installer un package
Pour pouvoir utiliser un package, vous devez le télécharger sur votre ordinateur. Cliquez sur le menu "tools" > "Install Packages", et une boîte de dialogue devrait s'ouvrir :
Le premier champ de selection Install from
permet de chosir si vous voulez installer le package depuis internet, ou en fournissant vous-même un fichier .zip compressé contenant le package. Nous allons laisser l'option par défaut, qui est bien plus pratique. Le CRAN signifie "Comprehensive R Archive Network", qui est l'organisme officielle qui s'occupe du langage R. Nous allons donc télécharger un package validé par le CRAN.
Le second champ packages
nous permet d'écrire la liste des noms des packages que l'on souhaite installer. C'est pratique car nous avons une auto-complétion du champs qui nous permet de facilement retrouver un package, même si on ne se souvient plus du nom ou de l'orthographe exacte. Essayons d'installer le package tidiverse
:
On peut installer plusieurs packages en même temps, en séparant leurs noms via une virgule. Installons tidyverse
et ggplot2
:
La case Install dependencies
nous permet d'installer automatiquement les packages secondaires dont on besoin les packages que l'on installe pour fonctionner. La plupart des packages complexes dépendendent d'autres packages plus simple pour fonctionner ! Nous laissons donc cette case cochée.
Une fois les packages désirés selectionnés, il ne nous reste plus qu'a cliquer sur installer. Les packages seront alors téléchargés dans le repertoire indiqué. Voici ce que devrait vous indiquer la console après l'installation :
Les lignes en rouge indiquent que le RStudio à essayé de télécharger les packages, et les lignes package ‘tidyverse’ successfully unpacked and MD5 sums checked
indiquent que les packages ont été téléchargés correctement. Si vous obtenez le même résultat, c'est que tout c'est bien passé.
Installation via la commande
Vous pouvez aussi installer vos packages directement via votre script. Il suffit d'utiliser la fonction install.packages()
et de lui préciser un vecteur de noms de packages à installer.
install.packages("tidiverse"); #on installe un seul package
install.packages(c("tidiverse", "ggplot2") #On installe deux packages
Cette fonction installera alors vos packages, exactement de la même façon que si vous utilisiez l'interface graphique.
Problèmes à l'installation :
Un problème fréquent lorsque vous installez des packages est que votre version de R n'est pas à jour. Si un packages demande une version de R plus récente que celle présente sur votre ordinateur, alors il est possible que R Studio vous indique qu'il n'arrive pas à trouver/installer le package en question. C'est pourquoi vous devez maintenir à jour réguliérement votre version de R et de RStudio. Vous pouvez télécharger la dernière version de R ici.
Connaitre la liste des packages et les supprimer
Il est parfois utile de pouvoir connaitre la liste des packages installées sur votre machine. Pour cela, vous avez deux solutions. La première consiste simplement à aller dans l'onglet packages
de R Studio :
Tous les packages installés sont alors affichés. Vous pouvez alors en selectionner pour en supprimer si vous le souhaitez. Il est rarement utile de supprimer des packages, sauf si vous avez une machine avec un disque dur ne dispose pas d'espace suffisant. Les packages de R prennent assez peu de places, vous devriez normalement pouvoir en avoir plusieurs centaines d'installés sur votre ordinateur sans que cela ne pose problème.
Vous pouvez aussi visualiser et supprimer des packages via des fonctions :
View(installed.packages()) #affiche tous les packages installés
remove.packages("tidyverse") #supprime le ou les packages passés en vecteur
Mettre à jour vos packages
Les packages sont mis à jour de façon régulière par leurs auteurs. Il nous faut donc les mettre à jour également pour profiter des dernières fonctionalités, ou simplement s'assurer de leur compatibilité avec la dernière version de R. Pour mettre à jour nos packages, il suffit d'aller dans le menu "Tools" et de cliquer sur "Check for packages updates". Une fenêtre va s'ouvrir :
Il vous suffit alors de selectionner les packages que vous voulez mettre à jour, puis de cliquer sur "Install Updates". Vous pouvez mettre à jour tous les packages en cliquant sur "Select all" pour selectionner tous les packages en même temps. Ici, les packages openssl
et RJSONIO
disposent d'une nouvelle version.
Les packages vont alors se mettre à jour, et la console vous affichera un retour similaire à celui là.Comme pour l'installation des packages, la dernière ligne indique où les packages sont installés, et les lignes précédentes indiquent que l'installation c'est bien passée. Là aussi, il vous faudra parfois mettre à jour R avant de pouvoir mettre à jour certains packages.
Mise à jour via une commande
Vous pouvez aussi mettre à jour vos packages via la fonction install.packages()
que nous connaissons déjà. Cette fonction va reconnaitre automatiquement que le package existe déjà, et elle le mettera à jour.
install.packages(c("tidiverse", "ggplot2")
Utiliser nos packages
Maintenant que nous savons installer des packages et les mettre à jour, voyons un peu comment nous pouvons nous en servir en pratique. Pour l'exemple, nous allons utiliser le package stringr
qui permet de manipuler facilement les chaînes de caractères. Installons notre package :
install.packages("stringr")
Appeler une fonction d'un package
Pour appeller une fonction d'un package installé sur votre ordinateur, il suffit d'utiliser la syntaxe suivante nomDuPackage::nomDelaFonction
. Utilisons la fonction str_length()
du package stringr
,qui permet de donner la longueur d'une chaine de caractères.
stringr::str_length("chat") #affiche 4
Cette façon d'appeller des fonctions d'un package en précisant le nom du package utilisé n'est pas très pratique. Il faut toujours re-écrire le nom du package en question, ce qui fait perdre beaucoup de temps quand on utilise souvent les fonctions d'un package.
Attacher un package à l'environnement
Heureusement, il est possible de racourcir la syntaxe, en utilisant seulement le nom de la fonction.
Il faut pour cela attacher le package à l'environnement de travail, à l'aide de la fonction library()
:
library("stringr") #on charge le package
str_length("chat") #affiche 4, on peut appeller la fonction sans nommer le package
Remarque : La "bibliothèque" (_library _en anglais) designe le dossier qui contient l'ensemble des packages de R. Certaines autres langages de programmation appellent leurs packages des librairies, ce qui peut prêter à confusion si vous connaissez d'autres langages qui ont fait ce choix de vocabulaire. En R, un package s'appelle un package, et pas autrement !
En pratique, on attachera toujours les packages que l'on utilise via library
pour éviter d'avoir à rappeler leur nom à chaque fois qu'on souhaite utiliser une fonction. Le revers de la médaille, c'est qu'il n'est pas toujours facile de savoir que telle fonction provient de tel ou tel package que vous avez attaché. Ici, rien n'indique que la fonction str_length()
vient d'un package externe.
Si vous oubliez de charger un package et essayer d'appeller la fonction directement, R vous indiquera que la fonction n'existe pas :Pensez donc bien à charger vos packages avec library()
avant de les utiliser !
Connaitre les packages attachés
Pour connaitre les packages qui sont actuellement attachés à votre environnement, vous pouvez regarder dans l'onglet "packages" de RStudio. Les packages attachés seront cochés, comme ici stringr
:
Vous pouvez utiliser les cases à cocher pour attacher ou détacher un package. Il est néanmoins déconseillé d'attacher les packages ainsi. Vous risquez d'oublier les packages que vous utilisez si vous n'écrivez aucune instruction dans votre code les indiquant. Il est préférable de toujours charger les packages avec library()
au début de votre script, pour permettre de voir les packages avec lesquels on va travailler.
Connaitre le contenu d'un package via la documentation
Chaque package apporte de nouvelles fonctions et classes d'objets. Comment avons nous su que la fonction str_length()
existait dans le package stringr
et qu'elle demandait un vecteur de chaines en premier paramétre ? Pour nous aider, les créateurs des packages écrivent toujours une documentation, qui liste l'ensemble des fonctions et classes qu'un package contient, avec les détails de chaque élément. Chaque fonction est décrite par un texte, les différents paramétres sont expliqués, etc.
Pour connaitre la documentation d'un package, allez sur le site https://www.rdocumentation.org/ . Il vous suffit de chercher le nom de votre package via la barre de recherche :On trouve bien notre package stringr
! On retrouve sur la documention de tous les packages les informations suivantes :
- Le nom du package en haut à gauche.
- A coté du nom, la version actuelle du package.
- En dessous, le nom du créateur du package.
- A droite, la popularité du package. Ici, Stringr est très populaire, car il est plus téléchargé que 99.99% des packages existants !
- La plupart des packages proposent une description générale du package, qui explique pourquoi il existe et ce qu'il apporte.
Et bien entendu, la documentation contient l'ensemble de ce qu'apporte le package.
Ici, la documention non explique que toutes les fonctions du package prennent un vecteur de chaines en premier argument. Puis chaque fonction permet de faire un traitement différent sur une chaine. On y retrouve ainsi la fonction str_length()
que vous avons utilisé.
Des documentations plus ou moins faciles d'accés
Certains packages sont mieux documentés que d'autres. Stringr propose une description du package, de nombreux exemples, etc. La plupart des packages se contentent de donner la liste brute de ce qu'ils contiennent, avec pour chaque fonction une description très rapide et la liste des paramètres. Voici la page de documentation du package quantmod
, destiné aux financiers.
Un peu moins facile à lire non ? Avec la pratique, vous apprenderez à lire plus facilement les différentes documentations des packages que vous utiliserez. N'hésitez pas non plus à chercher de l'aide sur internet si l'utilisation d'une fonction d'un package de vous semble pas claire et vous pose des problèmes ! Des utilisateurs expérimentés seront ravis de vous aider. Dans ce cours, nous n'utiliseront que des packages très bien documentés et pour lequels il est très facile de trouver de l'aide.
Remarque : Il existe une façon d'accéder directement à la documentation d'un package depuis R studio, via la ligne de code suivante :
vignette("stringr", package = "stringr")
Une fois executée, vous aurez accés à la documentation du package en question, qui s'ouvrira soit directement dans l'onglet "help" en bas a droite de R Studio, soit automatiquement dans une nouvelle fenêtre de votre nagivateur internet. A vous de voir quelle est la façon qui vous convient le mieux pour accéder à la documentation d'un package !