Je vous recommande de lire les sections 1 Ă 5 de ce document avant la sĂ©ance afin de se concentrer sur lâapprentissage (sections 6 Ă 9). Les sections 10 Ă 15 sont en quelque sorte des annexes, que je vous conseille de lire aprĂšs le didacticiel.
En 2-3h, il est impossible de maitriser R. Par contre, il y a certains aspects de la logique de R qui sont essentiels Ă comprendre et Ă acquĂ©rir pour pouvoir apprendre par soi-mĂȘme. Je vais donc essayer de vous fournir ces bases. Ce nâest pas la partie la plus intĂ©ressante, mais câest la plus dĂ©licate Ă apprendre. Si vous maitrisez cette partie, alors vous serez indĂ©pendant sous R. Ces aspects concernent principalement les types (section 7) et structures des objets (section 8), ainsi que la manipulation de ces objets (section 9).
Ce didacticiel concerne uniquement lâutilisation de R, sa logique et sa syntaxe. Les applications (graphiques, statistiquesâŠ) ne sont pas abordĂ©es pour plusieurs raisons. Tout dâabord, chacun utilise R pour diffĂ©rentes raisons et applications. En plus, les applications sont quasiment infinies ; il est donc impossible de tout traiter. Ensuite, en commençant par les applications sans connaitre le fonctionnement, vous arriverez sĂ»rement Ă utiliser R en reproduisant des bouts de codes trouvĂ©s un peu partout, mais sans forcĂ©ment les comprendre et donc sans pouvoir les adapter Ă vos besoins. Vous finirez sĂ»rement par comprendre comment R fonctionne, mais lâapprentissage sera beaucoup plus long (je dis ça par expĂ©rience). Enfin, si le fonctionnement est compris, vous aurez les bases pour apprendre les diffĂ©rentes applications.
Je vais vous embĂȘter avec des questions de terminologie et je vais essayer de vous inculquer des habitudes de codage. Il est important de prendre lâhabitude dâutiliser les bons termes (pour pouvoir Ă©changer avec des collĂšgues) et de bien organiser votre code (pour quâil soit plus lisible).
R est un logiciel libre permettant de manipuler et analyser des donnĂ©es et de rĂ©aliser des graphiques. Il nây a quasiment pas de menus, tout se fait par des lignes de commande (voir aussi Rcmdr
et easieR
). Ăa rend les choses difficiles, surtout au dĂ©but, mais câest aussi grĂące Ă cela que tout est possible ; on nâest pas limitĂ© par ce qui est proposĂ© dans les menus.
R est dĂ©veloppĂ© par une communautĂ© dâutilisateurs, qui peuvent contribuer sous la forme de packages. Il existe des milliers de packages qui contiennent des fonctions permettant dâeffectuer des opĂ©rations particuliĂšres.
Avant de continuer, voici quelques petites précisions concernant ce document.
Ce document contient du texte et du code R. Le code est en grisé
, et lâoutput dans des cadres blancs.
Dans les exercices ci-dessous, le code sera cachĂ© par dĂ©faut. Essayez avant dâafficher le code. Vous pourrez ensuite lâafficher (bouton hide
/code
à droite) pour vérifier si votre réponse est correcte. Des explications sont également données juste en dessous du code. Donc ne descendez pas trop vite dans le document.
Notez aussi que jâutilise le point comme symbole de dĂ©cimale contrairement Ă la nomenclature française, mais câest le symbole utilisĂ© par R !
Si vous remarquez des erreurs, fautes de frappe, dâorthographe ou autres, merci de me les signaler !
Lorsque vous ouvrez R, vous trouvez une barre de menu et une fenĂȘtre intitulĂ©e R Console
. Câest dans cette fenĂȘtre quâil faut Ă©crire les commandes. Le symbole >
suivi du curseur clignotant indique que R est prĂȘt !
Certaines opérations sont longues ; tant que le >
et le curseur ne sont pas affichés sur la derniÚre ligne de la console, R est en train de travailler. Dans ce cas là , il faut attendre ! En cas de problÚmes, le bouton STOP
peut arrĂȘter les opĂ©rations en cours.
Les commandes (input), les rĂ©sultats (output), les messages (warnings) et erreurs (errors) sâaffichent tous dans la console, dans diffĂ©rentes couleurs. Prenez lâhabitude de lire ces messages ; mĂȘme sâils vous semblent obscurs, câest grĂące Ă eux que vous pourrez identifier dâoĂč viennent les problĂšmes. Les erreurs notamment sont souvent dĂ©courageantes, mais il est essentiel de les comprendre. Si vous ne comprenez pas ce que ces messages signifient, un copier/coller dans un moteur de recherche devrait vous aider.
Il est possible de naviguer dans les commandes précédemment entrées en appuyant sur les flÚches haut/bas sur le clavier.
En allant dans la barre de menu, vous pouver crĂ©er un document, soit avec lâicĂŽne soit dans Fichier > Nouveau document/script
. Une nouvelle fenĂȘtre sâouvre : lâĂ©diteur. Câest dans lâĂ©diteur que vous allez crĂ©er des scripts, câest-Ă -dire des fichiers qui contiennent une liste de commandes qui pourront ĂȘtre exĂ©cutĂ©es sur plusieurs jeux de donnĂ©es. Il est possible de sauvegarder ces scripts comme nâimporte quel fichier (CTRL+s sous Windows ou cmd+s sous MacOS). Je vous conseille donc, mĂȘme en phase dâapprentissage, dâĂ©crire toutes vos commandes dans lâĂ©diteur et de sauvegarder le fichier, plutĂŽt que dâenregistrer lâespace de travail (cf. 5.3).
Dans lâĂ©diteur, il suffit de sĂ©lectionner les commandes Ă exĂ©cuter et dâappuyer sur CTRL+r (Windows) ou cmd+ENTER (MacOS) pour envoyer vers la console automatiquement. Câest plus simple et plus sĂ»r que le copier/coller.
Le symbole #
permet dâinsĂ©rer des commentaires dans du code R. NâhĂ©sitez pas Ă commenter vos scripts !
LâĂ©diteur sous MacOS est vraiment bien. Pour les utilisateurs Windows et Linux, je vous conseille dâutiliser RStudio (cf. 3.4 et 5.4).
Quand vous quittez R, une fenĂȘtre sâouvre vous demandant si vous voulez sauver lâimage de lâespace de travail. Il est conseillĂ© de ne pas sauvegarder lâespace de travail afin dâĂ©viter que les objets (et leurs erreurs) restent en mĂ©moire lors de lâouverture dâune nouvelle session.
Les choses sont un peu diffĂ©rentes dans RStudio (cf. 3.4), mais les mĂȘmes fenĂȘtres sont prĂ©sentes : la console et lâĂ©diteur, plus deux autres fenĂȘtres (fichiers, packages, graphiques, aide, et historique). Il est possible de rĂ©organiser ces fenĂȘtres dans les prĂ©fĂ©rences/options.
Pour les exemples ci-dessous ainsi que dans le reste du document, vous pouvez copier/coller le code dans la console (ou mieux, dans votre script puis lâenvoyer Ă la console) pour essayer par vous-mĂȘme de comprendre comment ça marche. NâhĂ©sitez pas Ă essayer ce qui vous passe par la tĂȘte ; le meilleur moyen pour apprendre est dâessayer et de faire des erreurs !
R travaille avec des objets : les donnĂ©es sont sauvegardĂ©es dans des objets, on manipule et travaille avec ces objets, et on exĂ©cute des opĂ©rations sur ces objets. Autrement dit, un objet est lâunitĂ© de base dans R, une variable qui peut contenir tout type et structure de donnĂ©es (cf. 7-8). Cela implique que les donnĂ©es doivent ĂȘtre stockĂ©es dans un objet pour pouvoir les manipuler : mĂȘme si les donnĂ©es peuvent apparaitre dans la console, R ne pourra pas travailler dessus si elles ne sont pas stockĂ©es dans un objet.
Pour aider Ă la comprĂ©hension de la notion dâobjet, voici une analogie : vous allez manger chez des amis qui vous proposent un plat merveilleux. Si vous rentrez chez vous ainsi, vous aurez uniquement savourĂ© ce plat. En revanche, si vous leur demandez la recette, vous pourrez la rĂ©utiliser pour dâautres repas. Le fait dâavoir mangĂ© le repas correspond dans R Ă exĂ©cuter une commande. Le fait de garder en mĂ©moire la recette correspond au fait de garder lâobjet en mĂ©moire pour pouvoir lâutiliser ultĂ©rieurement.
Les objets nâexistent que dans lâespace de travail tant quâils ne sont pas sauvegardĂ©s en tant que fichiers. Ce qui veut dire que :
La plupart du temps, vous crĂ©erez un objet directement Ă partir de lâoutput dâune fonction, dâun autre objet, ou de valeurs numĂ©riques ou caractĂšres. Pour assigner des donnĂ©es Ă un objet, il faut utiliser le symbole :
<-
(infĂ©rieur Ă , suivi dâun tiret sans espace entre les deux) ou=
(mais que je ne conseille pas pour éviter les confusions, cf. 7.4 et 10.1)Je conseille de toujours laisser un espace avant et aprÚs ces symboles pour que le code soit propre.
Par exemple, pour assigner la valeur 1 à un objet nommé x
(qui sera de mode numérique) :
x <- 1
Les valeurs ont été assignées à x
, mais aucun ârĂ©sultatâ nâapparait dans la console. On a en effet juste demandĂ© Ă R de crĂ©er x
, on ne lui a pas demandĂ© dâafficher x
. Pour afficher le contenu dâun objet, il suffit de taper son nom dans la console :
x
[1] 1
Remarquez que si vous tapez 1
dans la console, R vous affichera directement la valeur 1 dans la console, montrant quâaucun objet nâa Ă©tĂ© créé ; on a juste demandĂ© Ă R dâafficher la valeur 1 :
1
[1] 1
Il est aussi possible de stocker des informations plus complexes. Par exemple, il est possible de concaténer (combiner) des valeurs avec la fonction c()
, en séparant les valeurs par des virgules :
y <- c(1.5, 3, 10.05)
y
[1] 1.50 3.00 10.05
La fonction :
créé une suite dâentiers entre deux limites. Pour stocker une suite dâentiers de 1 Ă 10 dans un objet nommĂ© z
:
z <- 1:10
z
[1] 1 2 3 4 5 6 7 8 9 10
Pour assigner la moyenne (fonction mean()
) dâune suite dâentiers de 1 Ă 10 Ă un objet appelĂ© moyenne1
:
moyenne1 <- mean(1:10)
moyenne1
[1] 5.5
Il est Ă©galement possible dâutiliser des objets créés prĂ©cĂ©demment :
moyenne2 <- mean(x)
moyenne2
[1] 1
Les deux moyennes sont identiques car x
contient les valeurs 1 Ă 10. Dans le cas de moyenne2
, on a appliqué la fonction mean()
Ă un objet x
. Le fait dâappliquer des opĂ©rations nouvelles Ă des objets stockĂ©s dans la mĂ©moire est la maniĂšre dont R fonctionne.
Vous pouvez choisir le nom des objets comme vous le voulez. Mais faites en sorte que vous compreniez ce que cet objet contient !
Par ailleurs, il existe 3 rĂšgles importantes pour le nom des objets :
.
et _
sont des symboles valides, le premier étant aussi permis au début du nom. Les autres caractÚres spéciaux/symboles ne sont pas permis dans le nomExemples de noms valides et différents : mes.donnees
, mes_donnees
, Mes.Donnees
Exemples de noms non valides : 2donnees
, /donnees
, $donnees
Une erreur fréquente dans R est : Error: object 'x' not found
Il y a 3 possibilités :
ls()
dans la consoleLes objets peuvent ĂȘtre de diffĂ©rents modes et classes (cf. 8).
Le mode dâun objet correspond au type de donnĂ©es quâil contient.
Les modes principaux de R sont : numérique (numeric
), caractĂšre (character
), logique (logical
) et fonction (function
). Les noms entre parenthĂšses sont les noms utilisĂ©s par R ; les traductions françaises nâont aucune valeur dans R !
Il est possible de vĂ©rifier le mode dâun objet avec la fonction mode()
:
x <- 1:10
mode(x)
[1] "numeric"
Les objets de mode numérique contiennent évidemment des nombres : entier (1 ; 20 ; 500 ; -3), réel (1.00 ; 20.25 ; 500.1 ; -3.55) ou complexe (3+2i).
Un caractĂšre est une valeur contenant au moins une lettre : âabcâ, âa1câ, â2bcâ, " 2" (notez lâespace avant le 2). Dans R, les caractĂšres apparaitront toujours entre guillemets. Les guillemets peuvent ĂȘtre simples (âexempleâ) ou doubles (âexempleâ) ; il faut juste que le guillemet de fermeture soit le mĂȘme que celui dâouverture.
Le mode logique ne correspond quâĂ deux valeurs possibles : TRUE
et FALSE
, en capitales sans guillemets. Lorsquâelles sont converties en numĂ©riques, ces valeurs correspondent Ă 1 et 0 respectivement.
Si vous cherchez de la documentation, vous trouverez parfois les abréviations T
et F
. Cela suffit la plupart du temps, mais il est fortement conseillé de toujours utiliser les versions complÚtes TRUE
et FALSE
.
Une fonction applique une ou plusieurs opĂ©rations Ă des donnĂ©es et en sort un rĂ©sultat. De nombreuses fonctions existent dans lâinstallation de base de R (par exemple mean()
), et il en existe encore plus dans les packages. Vous pouvez aussi créer vos propres fonctions.
Un objet de mode fonction ne contient pas de rĂ©sultat mais uniquement une suite dâopĂ©rations. Il est possible dâafficher cette suite dâopĂ©rations en tapant le nom de la fonction (une fonction est un objet) dans la console, par exemple mean
:
function (x, ...)
UseMethod("mean")
<bytecode: 0x7f7fb219d2e0>
<environment: namespace:base>
Mais en gĂ©nĂ©ral, vous voulez appeler (call) cette fonction sur un objet de donnĂ©es (input), et assigner le rĂ©sultat (output) Ă un autre objet. Dans ce cas lĂ , il faudra utiliser des parenthĂšses aprĂšs le nom de la fonction pour indiquer que lâon appelle la fonction et que lâon cherche Ă appliquer les opĂ©rations.
Câest ce que nous avons vu prĂ©cĂ©demment :
x <- c(3,4,6,8,12,15,20)
on appelle la fonction c()
pour concaténer des valeurs dans x
x
[1] 3 4 6 8 12 15 20
mode(x)
on appelle la fonction mode()
pour afficher le mode de x
[1] "numeric"
mean(x)
on appelle la fonction mean()
pour calculer la moyenne de x
[1] 9.714286
Pour afficher lâaide dâune fonction, il suffit de taper son nom prĂ©cĂ©dĂ© dâun point dâinterrogation, ou dâutiliser la fonction help()
, dans la console (cf. 13) :
?mean
help(mean)
Les arguments sont les options de la fonction. Ils possĂšdent toujours des noms que lâon peut trouver dans la dĂ©finition de la fonction sur la page dâaide. Les arguments sont tous listĂ©s entre les parenthĂšses de lâappel Ă la fonction, sĂ©parĂ©s par des virgules, et le symbole =
permet dâassigner des valeurs (options) aux arguments.
Il nâest pas nĂ©cessaire dâĂ©crire leur nom pour les modifier, lâordre suffit.
Certains arguments possĂšdent des valeurs par dĂ©faut, que lâon peut identifier sur la page dâaide : le nom de lâargument est alors suivi du symbole =
puis de la valeur par dĂ©faut. Ces valeurs par dĂ©faut sont celles qui seront utilisĂ©es si lâon nâassigne pas de valeur lors de lâappel Ă la fonction.
Si un argument nâa pas de valeur par dĂ©faut, il sera alors nĂ©cessaire dâattribuer une valeur lors de lâappel Ă la fonction, sinon il y aura une erreur du genre âlâargument x est manquant, avec aucune valeur par dĂ©fautâ.
Dans lâappel Ă la fonction, il existe trois possibilitĂ©s pour utiliser les arguments :
=
; les arguments non nommĂ©s utiliseront alors les valeurs par dĂ©fautPrenons lâexemple de la fonction matrix()
qui sert à créer des matrices et que nous utiliserons dans la section 8.2.
Sa page dâaide indique quâelle comporte 5 arguments nommĂ©s data
, nrow
, ncol
, byrow
et dimnames
, dans cet ordre.
Ils ont tous des valeurs par défaut car ils sont tous suivi de =
et dâune valeur (respectivement : NA
, 1
, 1
, FALSE
et NULL
).
Lâargument data
demande les données entrantes (input). Par défaut, des valeurs manquantes (NA
ou ânot availableâ, qui correspondent aux cases vides sous Excel) remplissent la matrice. Les arguments nrow
et ncol
indiquent le nombre de lignes et de colonnes respectivement, par défaut 1 ligne et 1 colonne. Laissons de cÎté les autres arguments.
Ces 3 lignes sont identiques et permettent de créer une matrice contenant les entiers de 1 à 10 répartis en 5 lignes et 2 colonnes :
matrix(data=1:10, nrow=5, ncol=2)
: lâargument data
contient les entiers de 1 Ă 10, les arguments nrow
et ncol
répartissent les données en 5 lignes et 2 colonnes respectivement ; on utilise les valeurs par défaut pour les arguments byrow
et dimnames
, on nâa donc pas besoin de les listermatrix(1:10, 5, 2)
: mĂȘme opĂ©ration mais sans nommer les trois premiers arguments. Lâordre est alors essentiel (comparer matrix(1:10, 2, 5)
par exemple)matrix(ncol=2, nrow=5, data=1:10)
: en nommant les arguments, il est possible de les lister dans le désordremode()
et comparez les outputs de chaque mode.mode
, mean
, c
et matrix
) en tant quâobjets.mat
de 2 lignes et 3 colonnes contenant les 6 premiĂšres lettres de lâalphabet.mean()
? Quels sont leurs noms et valeurs par défaut ?Réponses :
# Objet de mode numérique
x <- 1:10
mode(x)
# Output sans guillemets
x
# Objet de mode caractĂšre
y <- c("abc", "def")
mode(y)
# Output avec guillemets
y
# Objet de mode logique
z <- c(TRUE, TRUE, FALSE)
mode(z)
# Output sans guillemets
z
# Objets de mode fonction
mode(mean)
mode(mode)
mode(c)
mode(matrix)
# Matrice
let <- c("a","b","c","d","e","f")
mat <- matrix(data=let, nrow=2, ncol=3)
mat <- matrix(let, 2, 3)
mat <- matrix(nrow=2, data=let, ncol=3)
# mean()
# La fonction possĂšde 3 arguments : x, trim et na.rm
# Les valeurs par défaut sont : 0 et FALSE pour trim et na.rm respectivement
# x n'a pas de valeur par défaut ; il est donc obligatoire de lui atrribuer une valeur dans l'appel à la fonction
La classe dâun objet correspond Ă sa structure. Je vous prĂ©sente ici les classes principales de R. Il est possible dâen crĂ©er dâautres, et certaines fonctions assignent dâailleurs dâautres classes aux objets.
Un vecteur est lâunitĂ© de base dans R. Câest un objet sans dimension.
On peut voir ça comme un ensemble, une collection ou une suite de valeurs (nombres, caractĂšresâŠ).
Tous les Ă©lĂ©ments (valeurs) dâun vecteur sont du mĂȘme mode. Si besoin, les Ă©lĂ©ments seront convertis en un mode commun. Par exemple, un vecteur contenant la sĂ©quence 1,2,3,a,5
sera de mode caractĂšre, avec les chiffres convertis en caractĂšres (parce que les caractĂšres ne peuvent pas ĂȘtre convertis en nombres).
La fonction c()
que nous avons utilisée précédemment (cf. 6.2) permet de concaténer des données en un vecteur (certaines valeurs seront converties si besoin pour avoir un mode commun).
Exemples :
x <- 1:10
mode(x)
[1] "numeric"
class(x)
[1] "integer"
y <- c("a","b","c")
mode(y)
[1] "character"
class(y)
[1] "character"
z <- c(1,2,3,"a",5)
z
[1] "1" "2" "3" "a" "5"
mode(z)
[1] "character"
class(z)
[1] "character"
Les matrices sont des arrays à 2 dimensions. Elles se présentent sous la forme de tableaux.
Exemple (voir aussi 7.4.3) :
mat <- matrix(x, nrow=5, ncol=2)
mat
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
mode(mat)
[1] "numeric"
class(mat)
[1] "matrix"
Un array est un vecteur avec des dimensions. Ăa veut dire que tous les Ă©lĂ©ments dâun array doivent ĂȘtre de mĂȘme mode. De plus, le nombre dâĂ©lĂ©ments doit ĂȘtre divisible par la longueur des dimensions : dans le cas dâune matrice (2D array), le nombre dâĂ©lĂ©ments doit ĂȘtre Ă©gal au nombre de colonnes multipliĂ© par le nombre de lignes.
Exemple :
arr <- array(1:12, dim=c(2,3,2))
arr
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
Nombre dâĂ©lĂ©ments = 1:12 = 12
Longueur des dimensions = 2x3x2 = 12
mode(arr)
[1] "numeric"
class(arr)
[1] "array"
Câest la particularitĂ© de R. Les listes sont les objets les plus flexibles : les Ă©lĂ©ments peuvent ĂȘtre de modes et longueurs diffĂ©rentes.
Une liste peut avoir une structure hiĂ©rarchique, ce qui veut dire que chaque Ă©lĂ©ment dâune liste peut ĂȘtre un vecteur, un array ou une liste et ainsi de suite. La seule contrainte est que chaque Ă©lĂ©ment de niveau le plus bas est un vecteur ; ses Ă©lĂ©ments sont donc tous du mĂȘme mode.
Exemples :
my.list <- list(a=1:3, b=c("a","d"))
my.list
$a
[1] 1 2 3
$b
[1] "a" "d"
mode(my.list)
[1] "list"
class(my.list)
[1] "list"
Une liste est de mode et classe âlisteâ !
my.list2 <- list(a=list(num=1:3,let=c("a","b")), b=mat, d=c(4,5,"6d",7))
my.list2
$a
$a$num
[1] 1 2 3
$a$let
[1] "a" "b"
$b
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
$d
[1] "4" "5" "6d" "7"
my.list2
est une liste composée de 3 éléments (a
, b
et d
)
LâĂ©lĂ©ment 1 de my.list2
sâappelle a
et est une liste composée de 2 éléments (num
et let
)
LâĂ©lĂ©ment 1 de a
sâappelle num
et est un vecteur de mode numérique composé de 3 éléments (1
, 2
et 3
)
LâĂ©lĂ©ment 2 de a
sâappelle let
et est un vecteur de mode caractÚre composé de 2 éléments (a
et b
, qui nâont rien Ă voir avec les Ă©lĂ©ments de my.list2
)
LâĂ©lĂ©ment 2 de my.list2
sâappelle b
et est une matrice de mode numérique dont les valeurs sont issues de mat
LâĂ©lĂ©ment 3 de my.list2
sâappelle d
et est un vecteur de mode caractÚre composé de 4 éléments ("4"
, "5"
, "6d"
et "7"
, tous convertis en caractĂšre)
Lorsque les lignes de codes deviennent longues et complexes avec plusieurs fonctions imbriquĂ©es, utilisez les espaces de façon intelligente pour sĂ©parer les unitĂ©s. Dans lâexemple de my.list2
, je nâai mis des espaces entre les arguments que pour sĂ©parer les Ă©lĂ©ments de my.list2
. Les arguments permettant de définir la liste a
ne sont pas espacés, ni ceux permettant de définir le vecteur d
. Comme ça, on identifie plus facilement la structure de my.list2
dans le code.
Un data.frame est une liste avec un seul niveau hiĂ©rarchique, et dont tous les Ă©lĂ©ments sont de mĂȘme longueur (mĂȘme nombre de sous-Ă©lĂ©ments). Les Ă©lĂ©ments sont des vecteurs (donc les sous-Ă©lĂ©ments sont de mĂȘme mode), mais les diffĂ©rents Ă©lĂ©ments peuvent ĂȘtre de mode diffĂ©rents.
Les data.frames sont souvent utilisĂ©s pour reprĂ©senter des tableaux Excel : chaque colonne est un Ă©lĂ©ment (vecteur) du data.frame et les colonnes peuvent ĂȘtre de modes diffĂ©rents. Il est normal que les colonnes aient le mĂȘme nombre de lignes (et donc que les Ă©lĂ©ments aient la mĂȘme longueur).
Bien que les matrices et les data.frames se ressemblent, ces objets sont trÚs différents pour R. Une matrice est UN vecteur coupé en lignes et colonnes. Un data.frame est une liste de vecteurs, présentés en colonnes.
Les opĂ©rations sont en gĂ©nĂ©ral plus rapides sur les matrices. Donc si vous avez des gros jeux de donnĂ©es, essayez dâutiliser des matrices plutĂŽt que des data.frames.
Exemple :
my.df <- data.frame(num=1:3, let=c("a","b","c"))
my.df
num let
1 1 a
2 2 b
3 3 c
Les lignes sont numérotées si elles ne sont pas nommées. Attention à ne pas confondre les numéros de lignes avec les valeurs de la premiÚre colonne (num
).
mode(my.df)
[1] "list"
Les data.frames sont également de mode liste, ce qui est normal.
class(my.df)
[1] "data.frame"
Les facteurs ressemblent plus Ă un mode, mais pour R, câest une classe.
Un facteur est un vecteur de caractĂšre codĂ© en numĂ©rique. Un facteur est en fait composĂ© dâun vecteur dâentiers, oĂč chaque entier est associĂ© Ă un attribut (âlabelâ).
Dit autrement, les facteurs sont les variables catĂ©gorielles discrĂštes utilisĂ©es en statistique, par exemple sexe (valeurs = homme ou femme), couleur des yeux (valeurs = bleu, marron, vertâŠ), etc. Chaque valeur (appelĂ©e âlevelâ) est associĂ©e Ă un entier (de 1 au nombre de valeurs distinctes).
Certains logiciels ont besoin de crĂ©er des âdummy variablesâ pour traiter ce genre de donnĂ©es. R traite ces variables discrĂštes facilement avec les facteurs, que ce soit pour les statistiques ou les graphiques. Cela accĂ©lĂšre les opĂ©rations Ă©galement.
Par defaut, lorsque vous créez un data.frame, les colonnes de caractÚres sont transformées en facteur.
Exemples :
my.fac <- factor(c("homme","femme","femme","homme"))
my.fac
[1] homme femme femme homme
Levels: femme homme
mode(my.fac)
[1] "numeric"
Remarquez que les valeurs sont de mode numérique (ce qui explique pourquoi elles ne sont pas entre guillemets).
class(my.fac)
[1] "factor"
levels(my.fac)
[1] "femme" "homme"
Les levels sont par défaut par ordre alphabétique.
as.numeric(my.fac)
[1] 2 1 1 2
Lorsquâon convertit un facteur en numĂ©rique, on voit la reprĂ©sentation numĂ©rique des facteurs.
R peut bien sĂ»r gĂ©rer les dates. Les dates sont en fait une valeur numĂ©rique calculĂ©e en nombres de jours Ă partir dâune origine prĂ©dĂ©finie. Cette origine nâest pas la mĂȘme sous R et sous Excel selon le systĂšme dâexploitation, ce qui pose parfois des problĂšmes.
Il existe de nombreuses fonctions et packages spĂ©cifiques pour manipuler les dates, mais nous nâentrerons pas dans le dĂ©tail ici.
Exemples :
dat <- as.Date("27-07-2016", format="%d-%m-%Y")
dat
[1] "2016-07-27"
mode(dat)
[1] "numeric"
class(dat)
[1] "Date"
Câest ici que vous allez commencer Ă travailler !
Cette section concerne la manipulation dâobjets, et notamment comment en extraire une partie. Câest important car vous ne travaillerez pas forcĂ©ment sur toutes les colonnes/lignes dâun tableau et il faudra savoir comment sĂ©lectionner celles qui vous intĂ©ressent.
Cette section est sĂ©parĂ©e par classe dâobjet car chaque classe se comporte diffĂ©remment. Il est donc essentiel de savoir reconnaitre la classe dâun objet. Le mode importe peu par contre.
Vous devriez avoir suffisamment dâexemples et dâexercices dans ce document pour apprendre Ă manipuler tous les objets. Il est possible que vous ayez besoin de plus de temps, alors nâhĂ©sitez pas Ă rĂ©essayer aprĂšs ce didacticiel. Il est important que vous soyez Ă lâaise avec ces aspects avant dâaller plus loin.
Ces manipulations concernent les vecteurs de nâimporte quel mode, mais Ă©galement les vecteurs de dates et facteurs.
Créez deux vecteurs en utilisant la fonction :
(pour lâaide, taper ?":"
), (1) un vecteur x
contenant des entiers de 1 Ă 50, et (2) y
contenant des entiers de 50 Ă 1. Affichez-les dans la console. Ă votre avis, Ă quoi correspondent les nombres entre crochets ?
Réponse :
x <- 1:50
x
y <- 50:1
y
Les nombres entre crochets indiquent la position dans le vecteur de lâĂ©lĂ©ment affichĂ© juste aprĂšs. Dans le cas de x
, [16]
indique que lâĂ©lĂ©ment affichĂ© juste Ă droite (donc le nombre 16) est le 16Ăš Ă©lĂ©ment du vecteur x
. Câest inutile dans ce cas, mais dans le cas de y
, le 16Ăš Ă©lĂ©ment est le nombre 35, ce qui est moins Ă©vident. On parle dâindice. Ces indices sont au dĂ©but de chaque ligne.
Selon la largeur de votre console, les lignes seront plus ou moins longues, et donc les indices ne sâafficheront pas aux mĂȘmes positions.
En sachant cela, dâaprĂšs vous, comment extrait-on un Ă©lĂ©ment dâun vecteur, par exemple lâĂ©lĂ©ment n°47 de x puis de y ?
Réponse :
x[47]
y[47]
Le simple crochet permet dâextraire un ou plusieurs Ă©lĂ©ments dâun vecteur. MĂȘme si on ne dirait pas, le crochet est en fait une fonction (tapez ?"["
pour afficher lâaide).
Utilisation : tapez le nom de lâobjet que vous souhaitez sĂ©lectionner suivi de crochets. Entre les crochets, indiquez un vecteur dâindices (ou de noms, voir plus bas).
Exercices :
x
, str(x)
names(x) <- paste("n", 1:50, sep="")
. La fonction names()
permet dâafficher ou modifier les noms des Ă©lĂ©ments des objets et la fonction paste()
permet de coller des caractĂšres.x
, str(x)
Réponses :
x[44:47]
y[44:47]
x[c(44,46,48)]
y[c(44,46,48)]
x[-45]
y[-45]
x[-c(1,45)]
y[-c(1,45)]
x[-(1:3)]
y[-(1:3)]
mean(x[1:45])
mean(y[1:45])
mean(x[-8])
mean(y[-8])
x
str(x)
names(x) <- paste("n", 1:50, sep="")
x
str(x)
x['n5']
x["n5"]
x[c("n5", "n6", "n7")] #Il n'est bien sûr pas possible d'utiliser la fonction ":" pour créer une suite de caractÚres
Créez une matrice mat
contenant les entiers de 1 Ă 10 avec 5 lignes et 2 colonnes en utilisant la fonction matrix()
, puis affichez-la dans la console.
GrĂące Ă lâoutput, essayer de comprendre comment extraire les valeurs dâune matrice.
Réponse :
mat <- matrix(1:10, nrow=5, ncol=2)
mat
Le simple crochet permet dâextraire des lignes/colonnes dâune matrice.
Utilisation : tapez le nom de lâobjet que vous souhaitez sĂ©lectionner suivi de crochets. Entre les crochets, commencez par mettre une virgule (sinon vous risquez de lâoublier ; si si, ça arrive, souvent mĂȘme !). Avant la virgule, entrez un vecteur dâindices pour les lignes ; aprĂšs la virgule, un vecteur dâindices pour les colonnes. Si vous voulez sĂ©lectionner toutes les lignes/colonnes, ne rien entrer dans la partie correspondante avant/aprĂšs la virgule.
Exercices :
dimnames(mat) <- list(paste("row",1:5,sep=""), paste("col",1:2,sep=""))
. Les noms (dimnames()
) sont modifiées par une liste contenant deux éléments : un vecteur de caractÚres pour les lignes et un autre pour les colonnes.z
composé de deux valeurs : (1) la valeur de la 2Ú ligne et 1Ú colonne de mat, et (2) la valeur de la 3Ú ligne et 2Ú colonne de mat.mat2
à 2 lignes et 2 colonnes composée des valeurs (1) des deux premiÚres lignes et de la 1Ú colonne de mat, et (2) des lignes 3 et 4 et de la colonne 2 de mat.Réponses :
mat[2,1]
mat[2,]
str(mat[2,]) #un vecteur d'entiers
mat[,1]
str(mat[,1]) #un vecteur d'entiers
mat[2:3,1]
str(mat[2:3,1]) #un vecteur d'entiers
mat[2:3,1:2]
mat[2:3,]
str(mat[2:3,]) #une matrice d'entiers (les 2 dimensions apparaissent dans les crochets aprĂšs 'int')
mat[-2,1]
str(mat[-2,1]) #un vecteur d'entiers
mat[c(1,3), 1]
str(mat[c(1,3), 1]) #un vecteur d'entiers
dimnames(mat) <- list(paste("row",1:5,sep=""), paste("col",1:2,sep=""))
mat[c("row1","row3"),]
str(mat[c("row1","row3"),]) #une matrice d'entiers
z <- c(mat[2,1], mat[3,2])
z
mat2 <- matrix(c(mat[1:2,1], mat[3:4,2]), nrow=2, ncol=2)
mat2
Si possible (1 seule colonne/ligne), les dimensions seront supprimĂ©es et lâoutput sera un vecteur.
Créez un array arr
contenant les entiers de 1 Ă 20 avec 5 lignes, 2 colonnes et 2 niveaux dans la 3Ăš dimension, en utilisant la fonction array()
, puis affichez-la dans la console.
Réponse :
arr <- array(1:20, dim=c(5,2,2))
arr
Extraire la 3Ăš ligne, 1Ăš colonne et 2Ăš niveau de la 3Ăš dim de arr.
Réponse :
arr[3,1,2]
Le principe est le mĂȘme quâavec les matrices, mais avec plus de virgules pour sĂ©parer les indices pour chaque dimension.
Créez une liste mylist
composĂ©e de 3 Ă©lĂ©ments : (1) une liste composĂ©e dâun vecteur dâentiers 1 Ă 3 et dâun vecteur de caractĂšres a et b, (2) la matrice mat
, et (3) un vecteur composé des valeurs 4, 5, 6d et 7. Utilisez la fonction list()
.
Affichez la liste et sa structure.
GrĂące Ă lâoutput, essayer de comprendre comment extraire les valeurs dâune liste.
Réponse :
mylist <- list(list(1:3,c("a","b")), mat, c(4,5,"6d",7))
mylist
str(mylist) #Notez la structure hiérarchique
Le simple crochet permet dâextraire une liste contenant les Ă©lĂ©ments dâune liste. Le double crochet permet dâextraire un Ă©lĂ©ment dâune liste.
Utilisation : tapez le nom de lâobjet que vous souhaitez sĂ©lectionner suivi de crochets. Entre les doubles crochets, entrez lâindice de lâĂ©lĂ©ment que vous voulez extraire. Il nâest pas possible de sĂ©lectionner plusieurs Ă©lĂ©ments en mĂȘme temps avec le double crochet. Pour sĂ©lectionner plusieurs Ă©lĂ©ments, il faut que lâoutput soit une liste ; il faut donc utiliser le simple crochet.
Exercices :
w
comprenant 2 éléments : (1) la 2Ú ligne et la 1Ú colonne du 2Ú élément de mylist, et (2) le 2Ú élément du 1er élément du 1er élément de mylist.names(mylist) <- c("List1","MAT","VEC")
et names(mylist[[1]]) <- c("L1vec1","L1vec2")
MAT
de mylist.vec1
de mylist.Réponses :
mylist[[1]]
mylist[1]
mylist[c(1,3)]
mylist[[1]][[1]]
mylist[[1]][[1]][1]
mylist[[2]][,1]
mylist[[2]][3,]
mylist[[3]][3]
w <- c(mylist[[2]][2,1], mylist[[1]][[1]][2])
names(mylist) <- c("L1","MAT","VEC")
names(mylist[[1]]) <- c("vec1","vec2")
mylist
mylist[["MAT"]]
mylist[["L1"]][["vec1"]]
Les listes sont hiĂ©rarchiques et peuvent contenir toutes les classes dâobjets. Pour savoir comment extraire un Ă©lĂ©ment dâune liste, il faut donc savoir de quelle classe est cet Ă©lĂ©ment. Et ainsi de suite dans la structure. La mĂ©thode utilisĂ©e dĂ©pendra de la classe comme on lâa vu prĂ©cĂ©demment.
Le symbole $
peut remplacer le double crochet dans une liste nommĂ©e. Il est alors possible dâutiliser les noms dâĂ©lĂ©ments sans guillemets. Ne pensez pas que cette mĂ©thode est mieux. Elle est peu utilisĂ©e pour crĂ©er des scripts/fonctions applicables Ă de nombreuses situations.
Exemples :
mylist$MAT
col1 col2
row1 1 6
row2 2 7
row3 3 8
row4 4 9
row5 5 10
mylist$L1$vec1
[1] 1 2 3
Créer un data.frame mydf
contenant 3 colonnes et 10 lignes (dont les noms seront âr1â, âr2â, âŠ, âr10â) avec la fonction data.frame()
: (1) colonne A
avec les entiers de 1 Ă 10, (2) colonne B
contenant 10 valeurs alĂ©atoires issues dâune distribution normale (utiliser la fonction rnorm()
), et (3) colonne D
contenant 5 âeâ puis 5 âfâ (la fonction rep(..., each=5)
peut ĂȘtre utile). Affichez-le, ainsi que sa structure.
Réponse :
mydf <- data.frame(A=1:10, B=rnorm(10), D=rep(c("e","f"),each=5), row.names=paste("r",1:10,sep=""))
mydf
str(mydf)
Pour extaire des valeurs Ă partir dâun data.frame, la notation liste est bien sĂ»r applicable puisque les data.frames sont des listes particuliĂšres. Mais il est Ă©galement possible dâutiliser la notation matrice, plus flexible et plus intuitive.
Exercices :
Réponses :
mydf[[2]] #notation liste
mydf[,2] #notation matrice
mydf[["B"]] #notation liste nommée
mydf[,"B"] #notation matrice nommée
mydf$B #notation $
mydf[[2]][2:3] #notation liste
mydf[2:3,2] #notation matrice
mydf[c("r2","r3"), "B"] #notation matrice nommée
Il est souvent intĂ©ressant dâextraire des lignes dâun data.frame en se basant sur les valeurs dâune colonne.
Par exemple, extraire les lignes qui contiennent âeâ dans la colonne âDâ.
La logique nâest pas intuitive, mais ce nâest pas trĂšs compliquĂ©. En dĂ©composant, cela donne : (1) dans mydf, (2) sĂ©lectionner (3) les lignes dont (4) les valeurs sont Ă©gales Ă (5) âeâ dans (6) la colonne âDâ de âmydfâ.
Donc :
(1) mydf
(2) mydf[,]
(3) mydf[lignes,]
(4) mydf[lignes==valeur,]
LâĂ©galitĂ© est testĂ© par le symbole ==
, pour différencier du simple =
des arguments
(5) mydf[lignes=="e",]
(6) mydf[mydf$D=="e",]
Il est bien sûr possible de remplacer mydf$D
par dâautres notations (mydf[[3]]
, mydf[['D']]
).
A B D
r1 1 -1.5795649 e
r2 2 0.2555095 e
r3 3 0.6227635 e
r4 4 0.5079373 e
r5 5 -0.4499038 e
Pour extraire les lignes dont les valeurs de la colonne âDâ ne contiennent pas âeâ, utiliser le symbole diffĂ©rent !=
:
mydf[mydf$D!="e",]
A B D
r6 6 -0.1049976 f
r7 7 -0.7879905 f
r8 8 -1.7092761 f
r9 9 -0.6359420 f
r10 10 0.9078611 f
Pour extraire plusieurs valeurs, il faut alors utiliser le symbole %in%
plutĂŽt que ==
. Exemples :
mydf[mydf$A %in% c(1,3,5), ]
A B D
r1 1 -1.5795649 e
r3 3 0.6227635 e
r5 5 -0.4499038 e
mydf[row.names(mydf) %in% c("r1","r10"), ]
A B D
r1 1 -1.5795649 e
r10 10 0.9078611 f
Pour extraire en fonction des valeurs de plusieurs colonnes, il faut utiliser les opérateur bouléen ET (&
, toutes les conditions sont respectées) et OU (|
, au moins une condition est respectée) :
mydf[mydf$D=="e" & mydf$A %in% c(1,3,5), ]
A B D
r1 1 -1.5795649 e
r3 3 0.6227635 e
r5 5 -0.4499038 e
mydf[mydf$D=="e" | mydf$A %in% c(8,10), ]
A B D
r1 1 -1.5795649 e
r2 2 0.2555095 e
r3 3 0.6227635 e
r4 4 0.5079373 e
r5 5 -0.4499038 e
r8 8 -1.7092761 f
r10 10 0.9078611 f
Ces manipulations fonctionnent bien sĂ»r de la mĂȘme façon sur les colonnes (aprĂšs la virgule entre les simples crochets).
Pour ajouter une colonne Ă mydf, il suffit dâassigner un vecteur Ă une colonne supplĂ©mentaire :
mydf[[4]] <- rnorm(10)
A B D V4
r1 1 -1.5795649 e 0.341965486
r2 2 0.2555095 e 0.201031513
r3 3 0.6227635 e 0.556581860
r4 4 0.5079373 e -0.631212107
r5 5 -0.4499038 e 0.242101746
r6 6 -0.1049976 f -2.391774075
r7 7 -0.7879905 f -0.378202382
r8 8 -1.7092761 f 1.035118856
r9 9 -0.6359420 f 0.249394439
r10 10 0.9078611 f 0.006269643
Il est aussi possible de créer directement une colonne nommée :
mydf[["E"]] <- rnorm(10)
A B D V4 E
r1 1 -1.5795649 e 0.341965486 -1.05802984
r2 2 0.2555095 e 0.201031513 -0.64906076
r3 3 0.6227635 e 0.556581860 -0.57553261
r4 4 0.5079373 e -0.631212107 -1.06903209
r5 5 -0.4499038 e 0.242101746 0.04868978
r6 6 -0.1049976 f -2.391774075 3.79143329
r7 7 -0.7879905 f -0.378202382 -0.73228296
r8 8 -1.7092761 f 1.035118856 -0.37971712
r9 9 -0.6359420 f 0.249394439 1.58841958
r10 10 0.9078611 f 0.006269643 1.08405468
Il faut bien sĂ»r que le vecteur contiennent un nombre dâĂ©lĂ©ments Ă©gal au nombre de lignes du data.frame.
Pour ajouter une colonne à mydf qui correspond à la différence des colonnes 1 et 2, il suffit de faire :
mydf[[6]] <- mydf[[1]] - mydf[[2]]
A B D V4 E V6
r1 1 -1.5795649 e 0.341965486 -1.05802984 2.579565
r2 2 0.2555095 e 0.201031513 -0.64906076 1.744490
r3 3 0.6227635 e 0.556581860 -0.57553261 2.377237
r4 4 0.5079373 e -0.631212107 -1.06903209 3.492063
r5 5 -0.4499038 e 0.242101746 0.04868978 5.449904
r6 6 -0.1049976 f -2.391774075 3.79143329 6.104998
r7 7 -0.7879905 f -0.378202382 -0.73228296 7.787991
r8 8 -1.7092761 f 1.035118856 -0.37971712 9.709276
r9 9 -0.6359420 f 0.249394439 1.58841958 9.635942
r10 10 0.9078611 f 0.006269643 1.08405468 9.092139
R réalisera la soustraction ligne par ligne.
Il est ici aussi possible de nommer la colonne directement lors de sa création comme montré ci-dessus.
Les notations sont interchangeables ($
, [[indice]]
, [["nom"]]
).
Les exercices prĂ©cĂ©dents devraient vous permettre dâutiliser les diffĂ©rentes notations pour extraire des donnĂ©es dâun data.frame. Mais je vous conseille de crĂ©er de nouveaux data.frames et dâen extraire diffĂ©rentes parties de diffĂ©rentes façons pour bien ĂȘtre Ă lâaise.
Il est important de pouvoir identifier facilement les modes et les classes, ainsi que de différencier entre les objets de données, les fonctions et les arguments, pour pouvoir utiliser R.
Voici un résumé :
TRUE
/FALSE
, alors câest logique. Facile non ? En cas de doute, la fonction mode()
peut ĂȘtre utile.class()
et surtout str()
sont trĂšs utiles.Fonctions : ce sont aussi des objets, mais particuliers. Si vous tapez le nom dâune fonction, vous verrez les opĂ©rations que cette fonction effectue :
mean
Mais en général, vous voulez exéctuer les opérations de la fonction. Dans ce cas, il faut utiliser les parenthÚses pour grouper et définir les arguments :
mean(1:10)
Les parenthĂšses sont donc essentielles pour reconnaitre les fonctions.
Arguments : les arguments sont les options de la fonction. Ils sont tous entre les parenthÚses de la fonction, séparés par des virgules, et le symbole =
permet dâassigner des valeurs aux arguments. Ils peuvent ĂȘtre nommĂ©s ou utilisĂ©s dans lâordre dĂ©fini par la fonction.
Les virgules nâont donc quâune seule utilitĂ© dans R : sĂ©parer les arguments dâune fonction ([
et [[
sont en fait des fonctions).
Et je vous conseille encore de ne garder le =
que pour les arguments ; préférez <-
pour assigner (cf. 6.2 et 7.4).
Lâusage de chaque type est spĂ©cifique. Il est important de bien les diffĂ©rencier.
?"["
dans la console. Donc extraire = crochets et vice-versa !if... else...
. Nous nâen avons pas parlĂ©, mais vous en aurez forcĂ©ment besoin un jour sous R.Pour utiliser les fonctions disponibles dans un package, il faut commencer par installer ce dernier. Vous pouvez aller dans les menus, ou taper install.packages("nom du package")
dans la console.
Il faut également réguliÚrement mettre à jour les packages installés, soit en utilisant les menus, soit avec update.packages()
.
Mais lâinstallation ne suffit pas pour utiliser les fonctions du package. Il faut ensuite charger ce dernier dans lâespace de travail, en tapant library(nom du package)
dans la console (avec ou sans guillemets pour le nom du package).
Une erreur fréquente dans R est : Error: could not find function 'name of function'
. Il y a deux possibilités :
Maintenant que vous savez manipuler les objets sous R, vous devriez ĂȘtre capable de transformer un objet pour pouvoir appliquer une fonction dessus. Donc tout ce quâil vous manque, câest du vocabulaire.
Voici certaines façons de trouver une fonction pour effectuer une tùche particuliÚre :
apropos()
permet de trouver une fonction disponible (câest-Ă -dire contenue dans un package chargĂ©) Ă partir dâune partie de son nom. Essayez par exemple apropos("read")
. Cette fonction nâest pas sensible Ă la casse.help(package="nom du package")
??fonction
. Avec un point dâinterrogation, R cherche lâaide dâune fonction chargĂ©e. Avec deux, R cherche lâaide dâune fonction installĂ©e. Avec 3, R retourne une erreur. Avec 4⊠je vous laisse essayer !RSiteSearch()
permet de chercher sur une base de données de fonctions et vignettesJe vous joins également un aide mémoire des fonctions utiles par Mayeul Kauffmann.
Nâoubliez pas que R ainsi que tout ce qui sây rapporte est en Anglais !
Une page dâaide est toujours organisĂ©e de la mĂȘme façon. Prenons lâexemple de mean()
:
mean {base}
(âbaseâ indiquant lâinstallation de base de R)nom argument = valeur par dĂ©faut
), tandis que dâautre nâont pas de dĂ©faut (seul le nom de lâargument est donnĂ©) ; sans dĂ©faut, il est obligatoire de fournir une valeur lorsquâon appelle la fonction.x
nâa pas de valeur par dĂ©faut, tandis que trim
et na.rm
en ont (0
et FALSE
, respectivement) ; x
est donc obligatoire. Si vous ne précisez pas trim
et na.rm
, alors les valeurs par défaut seront utilisées.Il existe de nombreux livres, blogs, didacticiels⊠En voici deux qui me semblent pertinents pour commencer :
Il ne faut pas non plus oublier que R permet dâeffectuer de nombreux tests statistiques. Je vous invite donc Ă vous plonger dans ce domaine Ă©galement !
Voici quelques pistes pour continuer votre apprentissage :
read.table()
, read.csv()
, read.csv2()
, file.choose()
readxl
et xlsx
plot()
, boxplot()
, par()
, package ggplot2
plyr
et dplyr
?regex
et fonctions citées?"if"
formula()
apply()
, sapply()
, lapply()
âŠprint()
, cat()
is.na()
, is.nan()
seq()
, rep()
cbind()
, rbind()
vector()
, length()
, which()
Si vous ĂȘtes arrivĂ© lĂ en ayant tout compris, alors vous ne devriez plus avoir besoin de moi !
Sinon, tous les membres du groupe de R seront prĂȘts Ă vous aider, nâhĂ©sitez pas Ă nous contacter.
3. Comment installer R ?
Tout est disponible sur le site du R-Project : http://www.r-project.org/
Dans la liste Ă gauche, cliquer sur âCRANâ (Comprehensive R Archive Network) dans la catĂ©gorie âDownloadâ puis choisir un mirroir de tĂ©lĂ©chargement.
Dans lâencadrĂ© âDownload and Install Râ, cliquer sur le lien correspondant au systĂšme dâexploitation.
3.1. Windows
Cliquer sur âbaseâ ou âinstall R for the first timeâ, puis âDownload R 3.3.1 for Windowsâ. TĂ©lĂ©charger puis exĂ©ctuer le fichier dâinstallation. Suivre les instructions.
Vous pouvez choisir de nâinstaller que la version 64-bit, et dâinstaller les traductions de messages (les traductions ne sont pas toujours disponibles ni exactes, mais ça peut aider).
âOptions de dĂ©marrageâ : si vous cliquez sur âouiâ, vous pourrez choisir le mode dâaffichage de R, soit dans une seule grande fenĂȘtre (pratique si vous nâavez quâun Ă©cran, mode par dĂ©faut), soit dans des fenĂȘtres sĂ©pararĂ©es (pratique si vous avez 2 Ă©crans).
En plus de R, il est recommandĂ© dâinstaller RStudio (cf. 3.4).
En cas de problĂšme, contacter Nicolas Stefaniak (nicolas.stefaniak@univ-reims.fr).
3.2. Mac OS
Il est recommandĂ© dâutiliser un ordinateur avec Mac OS 10.9 (Mavericks) ou supĂ©rieur, mĂȘme si les versions Ă partir de 10.6 (Snow Leopard) sont supportĂ©es (lâinstallation de packages est cependant plus compliquĂ©e).
TĂ©lĂ©charger le fichier dâinstallation (âR-3.3.1.pkgâ) et lancer lâinstallation. Suivre les instructions.
Dans le dĂ©tail concernant le fichier dâinstallation, il est expliquĂ© que la derniĂšre version de XQuartz est nĂ©cessaire. TĂ©lĂ©charger (https://www.xquartz.org/) et installer XQuartz.
Il est Ă©galement possible dâutiliser RStudio (cf. 3.4), mĂȘme si cela nâapporte pas grand chose sous Mac pour lâutilisateur moyen.
En cas de problĂšme, me contacter (ivan.calandra@univ-reims.fr).
3.3. Linux
Pour installer R sous Ubuntu (une version LTS (14.04 ou 16.04) est préférable) ou une autre distribution de Linux, il suffit de chercher et installer les paquets r-base et r-base-dev depuis le gestionnaire de paquets.
Il est Ă©galement possible dâajouter le site du CRAN Ă la liste des dĂ©pĂŽts, de sorte Ă ce que les packages de R puissent ĂȘtre tĂ©lĂ©chargĂ©s, installĂ©s et mis Ă jour depuis le gestionnaire de paquets. Consulter la section âDownload R for Linuxâ sur le site https://cran.r-project.org/ pour plus de dĂ©tails.
En plus de R, il est recommandĂ© dâinstaller RStudio (cf. 3.4).
En cas de problÚme, contacter Philippe Regnault (philippe.regnault@univ-reims.fr) ou Frédéric Blanchard (frederic.blanchard@univ-reims.fr).
3.4. RStudio
RStudio est une interface pour R qui amĂ©liore notamment les fonctionalitĂ©s de lâĂ©diteur (couleurs, fermetures automatiques de parenthĂšses et guillemets, vĂ©rification de syntaxe⊠cf. 5.2) et est particuliĂšrement recommandĂ©e pour les utilisateur de Windows et Linux.
Aller sur le site de RStuduio (https://www.rstudio.com/) puis cliquer sur âDownload RStudioâ puis âDownload RStudio Desktopâ et tĂ©lĂ©charger le fichier dâinstallation correspondant au systĂšme dâexploitation (âRStudio 0.99.903 - âŠâ) dans la catĂ©gorie âInstallersâ en bas de la page. Lancer lâinstallation et suivre les instructions.