(Pas de PMSI dans cet article, juste du R pour préparer la suite)
R, à son lancement, contient un ensemble de fonctions de base. Mais comme tout langage moderne, il est possible de lui ajouter en une instruction un ensemble d’autres fonctionalités. On parle alors de librairie.
Utiliser une librairie
Et assez prosaïquement, l’ajout d’une librairie (dans les exemples ci-dessous datasets) à un programme se fait par un appel library
.
library(datasets)
#ou
library("datasets")
cela permet ensuite d’appeler les variables ou fonctions définies au sein de la librairie soit directement :
jeu_donnees <- mtcars
soit en spécifiant la librairie :
jeu_donnees <- datasets::mtcars
cette spécification permet d’éviter le risque d’homonymie dans l’espace de nom par défaut. Il faut bien dire qu’à ce niveau c’est la jungle (le dernier défini l’emporte et on peut aussi écraser une variable ou une fonction avec nos propres valeurs volontairement ou pas).
Par exemple :
> library(datasets)
> x <- mtcars
> head(x)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
> mtcars <- "BLAAA"
> x <- mtcars
> head(x)
[1] "BLAAA"
> x <- datasets::mtcars
> head(x)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Cependant, les librairies bien faites ne posent généralement pas de problème (c’est le cas par exemple avec le %>%
qui est redéfinit dans de nombreuses librairies qui, si elles ne savent pas gérer leur cas particulier, passent la main à leur prédécesseur de façon récursive.
Que contient une librairie ?
Une librairie peut contenir tout type d’élément de R.
Chaque élément contenu est souvent à chargement différé (ne s’use que si on en sert), économisant temps de chargement et d’exécution, et mémoire.
Parmi les fonctions, on en différencie 2 types :
- les fonctions R qui sont du code R “normal”, interprété
- les fonctions primitives qui sont souvent du code C compilé et venant se greffer dans le langage de façon transparente.
Cette différence est quasiment sans conséquence pratique pour l’utilisateur final (sauf à des niveaux assez tordus élevés d’utilisation) mais peut déboucher sur d’importants gains en terme de rapidité d’exécution.
Une librairie contient souvent aussi sa documentation en ligne qui s’affiche dans la tuile inférieure droite de RStudio :
Il suffit de taper le nom de la commande dans la boite de recherche pour atteindre la page correspondante.
Jouer les petits curieux
Sachez qu’il est possible de rentrer dans une librairie et de regarder ce qu’elle contient à condition que ce soit du code R ou des variables (donc pas les fonctions primitives). Pour cela, dans RStudio, il faut changer l’environnement dans la tuile supérieure droite :
“Global environment” correspond à l’environnement de base de votre script (ou de votre session R) et chaque “package:
” correspond à l’environnement d’une librairie chargée.
Dans la capture d’écran, vous pouvez voir un bout de l’environnement de la librairie “stats”. Toutes les lignes <Promise>
sont des variables ou fonctions pas encore chargées en mémoire mais disponibles.
R fait la promesse de charger l’objet correspondant à la demande, il est donc défini mais pas peuplé : il n’a pas pris de temps de chargement et traitement et n’occupe pas de mémoire.
Si des entrées sont déjà disponibles dans “Data”, “Values” ou “Functions”, leur contenu est affiché à la suite ou affichable en cliquant dessus (ou via un View()
, un print
ou ce que vous voulez).
Conclusion
Cet article n’a rien apporté à la pratique du PMSI dans R mais il était nécessaire pour comprendre comment s’étendait le langage.
La prochaine fois je vous parlerai des libraires spécifiques PMSI