A.1 Introduction au langage de R

L’expérience montre que l’interface graphique, si elle facilite les premiers pas, est bien souvent contre-productive parce que l’utilisateur guidé par les menus et les boites de dialogues se lance moins volontiers dans l’écriture de scripts et dans l’exploration des nombreuses fonctions qui ne sont pas reprises dans ces menus. Ne vous laissez donc pas intimider, et dites-vous bien que vous allez largement rattraper le temps passé à apprendre le langage S, grâce aux habitudes de travail efficaces que vous aurez acquises en même temps!

Cette partie a pour but de vous permettre de vous initier facilement à R, et aussi, de vous donner une idée de l’étendue de ses possibilités. Étant donné qu’aucun prérequis n’est nécessaire (à part savoir utiliser un ordinateur), nous commencerons par les bases élémentaires qui peuvent être parcourues rapidement par ceux qui ont l’habitude de manipuler des langages matriciels tels que Matlab, Gauss ou encore S-PLUS. Plus loin, nous aborderons aussi des notions plus complexes à l’intention des plus expérimentés. Que les débutants ne s’effrayent donc pas s’ils décrochent un moment donné: ils pourront toujours reprendre les points difficiles plus tard lorsqu’ils auront assimilé les bases.

A.1.1 Lancer R

Une fois installé, sous Windows, R est accessible par défaut soit à partir d’un raccourci sur le bureau, soit à partir d’une entrée dans le menu Démarrer.

  • Double-cliquez sur l’icône ’R 2.2.1’ sur le bureau, ou activez le menu** *****Démarrer -> Programme -> R -> R 2.2.1***. Nous n’avons pas besoin, ici, des outils complémentaires de SciViews-R.
  • Sous Windows, vous vous trouvez face à une fenêtre appelée RGui avec quelques menus et à l’intérieur une seule sous-fenêtre est ouverte: la fenêtre de commandes ou R Console dans laquelle vous allez pouvoir entrer les commandes, à moins que vous n’ayez configuré l’application en mode SDI, auquel cas, vous n’aurez qu’une suele fenêtre nommée R Console.

A.1.2 Premières commandes

Dans la fenêtre de commande de R, apparaît un entête (qui indique la version, les termes de licence ainsi que quelques instructions de base) et puis le prompt qui se présente sous la forme d’un signe “plus grand que” (>). Ce dernier indique que R est prêt à recevoir une commande qu’il interprètera aussitôt qu’elle sera rentrée.

  • Taper 1+1{enter} (où {enter} signifie appuyer sur la touche entrée du clavier). R répond:

    [1] 2

R est un langage matriciel. Ce qui signifie qu’il retourne toujours une matrice (ou un vecteur, à la rigueur), fût-elle d’une seule ligne et d’une seule colonne comme ici. Le \[1\] indique que le résultat commence au premier (et seul) élément de la matrice,… et cet élément contient le résultat de votre calcul, soit 2… magique, non?

  • Pour créer une séquence, on peut entrer deux chiffres séparés par “:”, le premier indiquant le début de la séquence et le second en indiquant la fin. Entrez 1:5, R répond :

    [1] 1 2 3 4 5

Cette fois-ci, on a un vecteur de 5 éléments contenant la séquence générée.

  • Les calculs sur les vecteurs et matrices se font tout naturellement. Entrer: 1:5+1 et vous obtiendrez:

    [1] 2 3 4 5 6

R a créé la séquence et a additionné 1 à chacun de ses éléments. L’opérateur “:” est donc prioritaire sur l’addition, tout comme la multiplication est prioritaire sur l’addition dans par exemple 2*3+1 signifiant (2*3)+1. Essayez de prédire les résultats que donneront (1:5)+1 et 1:(5+1)?

  • Essayez aussi des calculs plus complexes. Vous pouvez utiliser +, -, *, /, ^ (exposant), log(), exp(), sin(), cos(), tan(), etc… Entrez par exemple log((10:5)^2)+sin(1:3). Dans cette dernière commande, log() et sin() sont des fonctions (notez que log est le logarithme népérien). Ces fonctions prennent des arguments qui sont à placer entre parenthèses. R fait un usage intensif des fonctions. Pour cette raison, on dit que R est un langage fonctionnel (comme Matlab). R comporte plusieurs milliers de fonctions! Et nous verrons plus loin que vous pouvez facilement créer vos propres fonctions personnalisées pour étendre encore ses possibilités.

  • Notez aussi que vous pouvez éditer la ligne de commande (flèches gauche et droite, home, end, del, backspace, etc…). De plus, les flèches haut et bas vous permettent de naviguer dans l’historique des commandes, ce qui permet de rappeler des commandes entrées précédemment pour les éditer. Exercez-vous à récupérer et modifiez les commandes précédentes par ce biais.

  • R accepte aussi des commandes incomplètes. Dans ce cas, il modifie le prompt et affiche + pour vous indiquer qu’il attend la suite. Entrez par exemple log( {enter}, puis à la ligne suivante, terminez votre commande par: 10) {enter}.

  • Toute syntaxe incorrecte est immédiatement sanctionnée par un message d’erreur. Dans ce cas, la navigation dans l’historique est très utile: appuyez sur la flèche haut pour rappeler la commande erronée et corrigez-là.

  • Une fonction très utile est c() qui permet de concaténer différents éléments au sein d’un même vecteur. Entrez par exemple c(1,3,5,8,10) {enter}, puis revenez à l’expression précédente (flèche haut) et ajoutez ^2 {enter}.

  • Enfin, “#” sert à ajouter un commentaire en fin de ligne. Entrez par exemple cos(c(-pi, 0, pi)) # mon commentaire. Vous constaterez que tout ce qui suit le # est ignoré par l’interpréteur de commande. Si vous omettez le # dans cette ligne, R tentera d’interpréter le ‘mon commentaire’ et considèrera dès lors que l’entrée est erronée! Les commentaires sont utiles lorsque l’on désire naviguer dans l’historique en mode interactif, mais aussi et surtout dans les scripts et fonctions personnalisées que nous verrons plus loin.

A.1.3 Variables et assignation

  • Le calcul direct est bien évidemment limité. On est tout de suite tenté de sauvegarder les résultats dans des variables. Cela se fait par l’opérateur d’assignation <-, mais depuis la version 1.4.1 de R, le signe égal (=) est également accepté, conformément à la plupart des autres langages informatiques. Une assignation se fait donc par: Nom.de.variables <- expression (ou Nom.de.variable <- expression). Les noms de variables peuvent contenir les caractères A-Z, a-z, 1-0 et . (le point), doivent commencer par une lettre et sont sensibles à la casse (la variable A est différente de la variable a!!!). Entrez par exemple A <- log(1:10). R n’imprime rien parce que le résultat est stocké dans la variable A. Pour voir ce que cette variable contient, entrer simplement son nom à la ligne de commande: A. Essayez aussi d’entrer a (vous obtiendrez un message “object not found”, ce qui démontre bien que “a” n’est pas équivalent à “A” comme nom de variable!

  • Un petit commentaire utile pour les habitués de S-PLUS qui utilisent le trait de soulignement pour les affectations (A_1 est en effet équivalent à A <- 1 ou encore A = 1). L’utilisation de ce symbole n’est plus autorisées dans les dernières versions de R. Perdez donc cette habitude d’utiliser le trait souligné comme signe d’affectation… De toutes façons, un code rempli de A_1 et autres machin_chose est tout bonnement illisible!

  • Les variables sont manipulées dans les expressions comme dans tout langage. Ex: B <- exp(A); B. Notez que ; (le point-virgule) sépare plusieurs commandes entrées sur la même ligne.

  • Pour connaître les variables actuellement stockées en mémoire, utilisez les fonctions objects() ou ls() ou dans Windows, l’entrée de menu Misc -> List objects.

  • Pour supprimer une ou plusieurs variables, utilisez la fonction remove() ou rm(). Pour supprimer tout, utilisez remove(list = ls()) ou dans Windows, l’entrée de menu Misc -> Remove all objects. Exemple, pour supprimer la variable B, vous entrerez: remove(B) (vérifiez que cette variable est bien éliminée de la mémoire grâce à ls()).

Remarque: utilisez fréquemment ces dernières fonctions. Les variables ont tendance à s’accumuler très vite dans votre environnement de travail, et grignotent petit à petit la mémoire vive de votre ordinateur. Alors, pensez à détruire régulièrement celles qui ne vous servent plus!

A.1.4 Quitter R et sauvegarder les variables, notion de workspace

  • Pour quitter R sous Windows, vous pouvez utiliser le menu File -> Exit ou la fonction q() (comme dans toutes les autres versions). Vous obtenez alors le message: “save workspace image?, oui/non/annuler”. Qu’est-ce que cela signifie? Nous allons vous l’expliquer, mais voyons d’abord d’autres notions qui sont indispensables pour le comprendre… Ne sortez pas de R maintenant et cliquez donc sur “annuler” pour revenir à votre session de travail R actuelle.

  • R travaille toujours par rapport au répertoire courant. Pour connaître le répertoire courant, utilisez: getwd(). Pour changer le répertoire courant, utilisez: setwd() ou sous Windows, l’entrée de menu File -> Change dir…. Attention! Les chemins de fichiers sont représentés selon la notation Unix. Cela signifie que le backslash (\) comme dans “c:\temp” est remplacé par le slash (/), par exemple: “c:/temp”. Vous pouvez aussi utiliser le double backslash (\\), comme dans: “c:\\temp”. Comme les répertoires et les noms de fichiers sont représentés dans des chaînes de caractères dans R, ils sont entourés de guillemets, comme toute autre chaîne de caractères manipulée dans R. Nous allons maintenant changer le répertoire courant vers “c:\temp” (ou tout autre répertoire de votre choix). Pour cela, entrez: setwd(“c:/temp”). Une fois que cela est fait, sortez de R en entrant q(), puis répondez “oui” au message demandant de sauvegarder le workspace.

  • Aller voir à l’aide de l’explorateur de Windows dans le fameux répertoire “c:\temp”. Vous devriez y trouver (entre autres) deux fichiers nommés .RData** et .Rhistory. Le premier contient vos variables correspondant à la dernière session R qui a été terminée avec “c:\temp” comme répertoire courant et pour laquelle vous avez répondu “oui” à la sauvegarde en quittant R. Le second contient l’historique de vos commandes de cette même session. Double-cliquez à présent sur le fichier .Rdata**. R se lance avec la traditionnelle bannière d’accueil, mais à présent, vous devez lire une ligne supplémentaire avant le prompt: \[Previously saved workspace restored\]

  • Faites un ls() pour lister les variables en mémoire… vous devez retrouver “A”. Entrez A… la variable doit contenir la même chose que lorsque vous aviez quitté R. Maintenant, utilisez la flèche** haut** plusieurs fois. Vous devez retrouver les différentes commandes que vous aviez entrées à la session précédente!

  • A présent que vous avez compris comment R sauvegarde les variables et comment il enregistre l’historique des commandes dans le répertoire courant, vous pouvez créer autant de répertoires séparés que vous voulez avoir de projets distincts. Prenez soin de toujours démarrer et arrêter R dans le répertoire courant correspondant au projet en cours.

A.1.5 Obtenir de l’aide dans R

Il est impossible de connaître par cœur la syntaxe des milliers de fonctions qui constituent l’environnement R! D’autant plus que de nombreux packages additionnels (actuellement près de 500!) viennent encore compléter cet environnement. Pour ces raisons, R offre des fonctions très efficaces de recherche et d’aide en ligne contextuelle. Il est vital que vous connaissiez ces fonctions pour pouvoir progresser.

  • Si vous connaissez le nom de la fonction recherchée, vous pouvez utiliser help() ou ? ou encore l’entrée de menu Help -> R language (standard)… sous Windows pour obtenir l’aide de cette fonction. Entrez par exemple ?log. Fermez le fenêtre d’aide lorsque vous l’aurez consultée.

  • Remarque: vous pouvez ouvrir autant de fenêtres d’aide simultanément que vous voulez sous Windows! Dans d’autres systèmes, il se peut que l’aide apparaisse en ligne à la console de commande, de sorte que vous ne pouvez afficher qu’un seul fichier d’aide à la fois,… mais dans tous les cas, l’aide au format HTML peut vous venir en secours pour visionner son texte en même temps que vous éditez votre commande: help(maFonction, htmlhelp = TRUE).

  • Si vous connaissez une partie du nom de la fonction, mais que vous n’êtes pas certain de l’orthographe de son nom complet, vous utiliserez apropos() ou l’entrée de menu Help -> Apropos… sous Windows. Essayez par exemple apropos(log). Vous serez peut-être impressionnés par le nombre de fonctions de R qui contiennent “log” dans leur nom. Je vous l’ai dit: R est extrêmement riche et comporte des milliers de fonctions! Vous pouvez tout faire ou presque avec ces fonctions. Certaines fonctions correspondent même à des traitements statistiques uniques qui n’existent pas (encore?) dans d’autres logiciels ;-)

  • A la fin du fichier d’aide, il y a presque toujours des exemples exécutables à l’aide de la fonction… example(). Par exemple, vous pouvez lancer l’exemple de la fonction example() à l’aide de: examples(example)… (vous me suivez?).

  • Une fonction a un certain nombre d’arguments (dans la parenthèse). Si on désire seulement se rappeler ces arguments sans forcément ouvrir une fenêtre d’aide, on peut utiliser args(). Tapez: args(log). Remarque: cette astuce ne marche pas pour toutes les fonctions (je ne rentre pas dans les détails; on peut toujours utiliser help() dans les cas où cela ne fonctionne pas)!

  • Si on veut pouvoir se promener dans l’aide et non pas uniquement afficher l’aide relative à une seule fonction, il vaut mieux lancer sa version HTML à l’aide de help.start() ou Help -> R language (html)… sous Windows. Dans l’aide HTML, on a en plus accès aux manuels, à un moteur de recherche, et à l’aide sur tous les packages installés (je reviendrai plus tard sur la notion de package). Par exemple, recherchez “log” dans “Search engine & keywords”. Lorsque vous avez sous les yeux la page d’aide de la fonction log(), déplacez-vous vers la section “See also”. Cliquez sur le lien sqrt et vous serez transportés vers la page d’aide de cette dernière fonction.

La rubrique “See also” est extrêmement pratique pour en apprendre plus sur les fonctions apparentées à celles que l’on utilise… et donc, de proche en proche, pour en apprendre plus sur le langage de R tout entier!