A.2 Les packages

R est modulaire (on peut lui rajouter des fonctions). De plus, comme il contient un très grand nombre de fonctions, toutes ne sont pas chargées en mémoire par défaut. Les fonctions optionnelles sont installables à l’aide de packages que l’on peut également charger à partir du site de R à http://cran.r-project.org. Les packages de R sont équivalents aux toolboxes de Matlab (pour ceux qui connaissent ce dernier logiciel)… Sauf que… les toolboxes de Matlab sont payantes (et chères) et que les packages de R sont, eux, gratuits!!!

  • Pour obtenir la liste des packages en mémoire, utilisez les instruction: (.packages()) ou search() ou encore l’entrée de menu Misc -> List search path sous Windows. Les deux dernières méthodes ne listent pas que les packages en mémoire, mais également les environnements de travail global (.GlobalEnv) et autres (Autoloads par exemple).

  • Pour obtenir la liste de tous les packages installés sur la machine, mais pas nécessairement chargés, recourrez à l’aide HTML et cliquez sur le lien “Packages”, ou alors entrez l’instruction .packages(all = TRUE).

  • Comme exercice, allez voir la fonction decloess() dans le package pastecs dans l’aide HTML.

  • Ensuite, retournez à R et rentrez ?decloess, ainsi que example(decloess). La fonction n’est pas reconnue par R (sauf si vous n’avez pas quitté R après avoir installé les packages additionnels, comme indiqué dans la partie I). Pourtant elle existe, puisque vous l’avez trouvée dans l’aide HTML! En fait, elle fait partie du package pastecs qui n’est pas chargé en mémoire, et donc, qui est “hors de portée” du moteur de calcul de R dans l’environnement actuel!

  • Pour charger le package en mémoire, il faut utiliser la fonction library(). Entrez: library(pastecs), puis search(). Un nouvel item “package:pastecs” apparaît dans la liste, indiquant que le package correspondant est chargé en mémoire.

  • Maintenant, entrez à nouveau ?decloess et example(decloess). Ces instructions doivent à présent être correctement reconnues et interprétées par R.

  • Un dernier mot à propos des packages: ils contiennent aussi des séries de données types pour les exemples, bien utiles pour se faire la main sur les fonctions qu’on découvre. Pour connaître les séries de données disponibles, utilisez la fonction data().

  • Pour charger en mémoire des données, par exemple marphy du package pastecs, utilisez: data(marphy). Vous pouvez maintenant représenter ces données graphiquement à l’aide de plot(marphy) (remarque: le graphique que vous voyez est un “matrix plot”), puis plot.ts(marphy) pour tracer les séries spatio-temporelles.

  • Enfin, de même qu’on libère la mémoire en éliminant des variables qui ne sont plus utilisées à l’aide de rm(), on a tout intérêt à décharger les packages qui ne sont plus utiles à l’aide de detach(“package:PKGNAME”). Ainsi, pour refermer le package pastecs, entrez: detach(“package:pastecs”), puis faites un search() pour vérifier que l’entrée n’existe plus dans la liste des environnements chargés en mémoire.

Remarque: il est évidemment idiot, et donc interdit, de décharger le package ‘base’ de la mémoire car celui-ci contient les fonctions de … base de R, sans lesquelles ce dernier ne peut pas fonctionner, et donc même pas se refermer proprement (c’est-à-dire, en sauvegardant les variables courantes, sic!). Pour la petite histoire, l’idée de décharger la package de base de R n’avait tellement pas effleuré l’esprit de ses programmeurs qu’ils n’avaient même pas pensé à interdire cette opération dans les premières versions de R. Ce n’est qu’après plusieurs années qu’un petit malin a découvert la faille… qui a été très rapidement corrigée!