« Premiers pas avec R » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
 
(41 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{tutoriel
|fait_partie_du_cours=Analytique et exploration de données
|fait_partie_du_module=Tutoriels R
|page_precedente=Tutoriels R
|page_suivante=Les données R
|statut=brouillon
|dernière_modif=2014/11/21
|cat tutoriels=Tutoriels R
|difficulté=intermédiaire
}}
[[Catégorie:R]]
== Introduction à l'environnement R ==
== Introduction à l'environnement R ==


Ligne 17 : Ligne 28 :
[[Fichier:RStudio.png|600px|thumb|none|Copie d'écran de R-Studio 0.98]]
[[Fichier:RStudio.png|600px|thumb|none|Copie d'écran de R-Studio 0.98]]


== Installation de paquets ==
== Les paquets / extensions ==


La plupart des paquets (extensions) de R sont disponibles à travers R. Exemple "statnet", un logiciels d'analyse de réseaux.
R possède des nombreuses extensions aussi appelés "bibliothèques" ou (en franglais) "librairies" et que l'on peut installer sous forme de paquet. L'opération peut se faire assez facilement dans R, mais il y a des problèmes parfois. Installer des paquets n'est pas la première priorité si vous utiliser R pour des analyses statistiques, par contre il faut absolument savoir faire ces installations si vous pensez utiliser les paquets "text mining"/analyse de texte. Ces derniers reposent souvent sur des programmes externes et pour lesquels l'environnement doit être préparé également.
Install.packages("statnet")
 
: ou plus verbeux:peut-etre une
; Lister les paquets installés et chargés par défaut:
Install.packages("statnet", dependencies = TRUE)
<source lang="matlab">
getOption("defaultPackages")
[1] "datasets"  "utils"    "grDevices" "graphics"  "stats"    "methods" 
</source>
 
; Liste tous les paquets que vous avez installé:
: Gardez la syntaxe "étrange" ci-dessous !
: <code>(.packages(all.available=TRUE))</code>
 
=== Utiliser un paquet ===


Alternativement, si vous utilisez RStudio, cliquez sur l'onglet "Packages", puis "Install". Dans la fenêtre popup on peu ensuite indique le nom (ou le début du nom) du package...
: <code>library("nom_du_paquet")</code>


[[Fichier:RStudio-install-packages.png|600px|thumb|néant|Installation de packages R avec RStudio]]
Par exemple:
library(tm)
library(tm.plugin.webmining)
library(SnowballC)
library(XML)
library(RCurl)
library(httr)


=== Introduction à l'environnement R ===
=== Installation de paquets ===


Voici comment l’environnement R se présente une fois l’application ouverte :
La plupart des paquets (extensions) de R sont disponibles à travers R. Lors de l'installation, R va vous demander de choisir parmi un dépositoire de code. Choisissez le plus proche ou celui qui vous le plus confiance dans votre réseau.


[[Fichier:R.png]]
Exemple "statnet", un logiciel d'analyse de réseaux.
install.packages("statnet")
: ou plus verbeux:peut-etre une
install.packages("statnet", dependencies = TRUE)


L’interface de l’environnement R se présente par une fenêtre contenant une barre de menus, une barre d’outils et la console R. Cette dernière permet d’introduire des commandes R (ou expressions).  
Alternativement, si vous utilisez RStudio, cliquez sur l'onglet "Packages", puis "Install". Dans la fenêtre popup on peu ensuite indique le nom (ou le début du nom) du package...


L’interprétateur de R traduit et exécute les commandes introduites par l’utilisateur.
[[Fichier:RStudio-install-packages.png|600px|thumb|néant|Installation de packages R avec RStudio]]


Le prompt de R est représenté par le symbole  '''''>''''' . Ce caractère signifie que l’interprétateur de R attend l’introduction d’une commande de la part de l’utilisateur.  
Essayez d'installer le paque "tm" (text mining). Si tout va bien d'autres paquets suivants sont automatiquement installés par ce "tm". '''Sous Ubuntu''', le processus peut marcher moins bien, surtout pour un ancien système 10.04LTS. '''Lire plus loin ce qu'il faut faire.''''
<pre>
install.packages("tm", dependencies = TRUE)
install.packages("RCurl", dependencies = TRUE)
install.packages("XML", dependencies = TRUE)
install.packages("SnowballC", dependencies = TRUE)
</pre>


Remarquons que l’interface standard graphique de R paraît élémentaire et peu ergonomique. Plusieurs interfaces graphiques existent et peuvent être installées. Nous recommandons l’installation de [http://www.rcommander.com/ R-Commander] et [http://www.rstudio.com/ R-Studio].
Si le text mining vous intéresse, installez aussi:
<pre>
install.packages("tm.plugin.webmining", dependencies = TRUE)
install.packages("koRpus", dependencies = TRUE)
</pre>


Voici une copie d'écran de R-Studio:
Certains paquets s'installent difficilement et différents raisons:


[[Fichier:RStudio.png|600px|thumb|none|Copie d'écran de R-Studio 0.98]]
* R ne trouve pas un environnement / langage dont il a besoin, par exemple JAVA ou Perl. Il faut que ces langages soit disponibles dans le chemin, les réinstaller si nécessaire. Certains paquets ont besoins du '''compilateur Java''', il faut donc installer le SDK.
* R nécessite des bibliothèques qu'il faut installer préalablement (par ex. sous Ubuntu, RCurl nécessite libcurl4-openssl-dev et libxml2-dev (voir ci-dessous), et tm nécessite Rpoppler.


=== Installation de paquets ===
; Choses à faire en plus sous Ubuntu (important !)


La plupart des paquets (extensions) de R sont disponibles à travers R. Exemple "statnet", un logiciels d'analyse de réseaux.
Vérifier qu'un bon kit de dévelopement Java soit installé
  Install.packages("statnet")
: Javac
: ou plus verbeux:
Si c'est pas le cas:
  Install.packages("statnet", dependencies = TRUE)
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
  sudo apt-get install oracle-java7-installer
ou encore
  sudo apt-get install oracle-java8-installer


Alternativement, si vous utilisez RStudio, cliquez sur l'onglet "Packages", puis "Install". Dans la fenêtre popup on peu ensuite indique le nom (ou le début du nom) du package...
Dans une console Linux (sous root), pour indiquer l'emplacement de Java, taper:
:<code>sudo R CMD javareconf</code>
ou encore
: <code>sudo R CMD javareconf -e</code>


[[Fichier:RStudio-install-packages.png|600px|thumb|néant|Installation de packages R avec RStudio]]
Il faut également installer ''préalablement'' des '''bibliothèques de développement''' Curl et XML, sinon vous allez recevoir des messages d'erreurs comme <code> ERROR: configuration failed for package ‘RCurl’</code>, <code>rm: cannot remove 'a.out.dSYM': Is a directory</code>
:<code>sudo apt-get install libcurl4-openssl-dev</code>
:<code>sudo apt-get install libxml2-dev</code>
:<code>sudo apt-get install libpoppler-dev libpoppler-glib-dev</code>


== L'aide et la documentation de R ==
== L'aide et la documentation de R ==
Ligne 76 : Ligne 126 :


R est à la fois un langage de programmation et un outil d'analyse de données. Un utilisateur n'est pas obligé de savoir programmer, mais il doit être capable d'utiliser des fonctions. En gros, toutes les commandes à taper font appel à des fonctions.
R est à la fois un langage de programmation et un outil d'analyse de données. Un utilisateur n'est pas obligé de savoir programmer, mais il doit être capable d'utiliser des fonctions. En gros, toutes les commandes à taper font appel à des fonctions.
La syntaxe de R ressemble superficiellement à celle des langages de type "C" et il s'agit d'une implémentation du langage [http://fr.wikipedia.org/wiki/S_%28langage_de_programmation%29 S] avec des extensions sémantiques dans la direction du langage Scheme


=== Commentaires ===
=== Commentaires ===
Ligne 83 : Ligne 135 :
Les commentaires sont très utiles en programmation pour décrire ce que le code fait.
Les commentaires sont très utiles en programmation pour décrire ce que le code fait.


=== Les objets de R ===
== Les objets de R ==
 
=== Objets et variables ===


Les  objets sont des entités qui sont stockées dans la mémoire de R. Les opérateurs d’assignation  '''''<-'''''  et  '''''->'''''  permettent de créer et de stocker des objets dans la session de R courante. Exemples :
Les  objets sont des entités qui sont stockées dans la mémoire de R. Il peut s'agir de nombres, de listes de nombres, de chaînes de caractères, de programmes, etc.
Poids <- 80 # L’objet Poids reçoit la valeur 80
80 -> Poids # L’objet Poids reçoit la valeur 80


Il est important de créer des objets afin de pouvoir les manipuler dans un deuxième moment. Par exemple :
Les opérateurs d’assignation  '''''<-'''''  et  '''''->'''''  permettent à la fois de créer des objets et de les stocker dans des variables de la session de R courante. Exemples :
<source lang="matlab">
Poids <- 80 # La variable Poids reçoit la valeur 80
80 -> Poids # La variable Poids reçoit la valeur 80
Poids = 50  # La variable Poids reçoit la valeur 50
</source>
On pourrait aussi dire que l'objet nommé "Poids" a la valeur de 80. Un objet existe indépendamment de son nom, mais il est important de créer des variables afin de pouvoir manipuler des objets dans un deuxième moment. Par exemple :
<source lang="matlab">
<source lang="matlab">
  a <- 32+10
  a <- 32+10
Ligne 95 : Ligne 153 :
  c <- a + b
  c <- a + b
</source>
</source>
Ainsi, si l’utilisateur ne crée pas des objets ; R exécute la commande et affiche l'output à l’écran. Cela dit, ce dernier ne sera pas accessible pour des traitements ultérieurs. Exemple :
Ainsi, si l’utilisateur ne crée pas de variables ; R exécute la commande et affiche l'output à l’écran. Cela dit, ce dernier ne sera pas accessible pour des traitements ultérieurs. Exemple :
<source lang="matlab">
<source lang="matlab">
  32+10
  32+10
Ligne 101 : Ligne 159 :
  # Contrairement à l’exemple ci-dessus, ici il est impossible de calculer la somme entre (32+10) et (10*21).
  # Contrairement à l’exemple ci-dessus, ici il est impossible de calculer la somme entre (32+10) et (10*21).
</source>
</source>
Remarquons que si on ne crée pas des objets, R traite les données... mais ces résultats seront inaccessibles pour des traitements succéssifs.
Remarquons que si on ne crée pas de variables, R traite les données... mais ces résultats seront inaccessibles pour des traitements successifs.


=== Types et structures de données ===
=== Types et structures de données ===


Dans R, différents types d'objets peuvent être crées et traités. Voici les principaux objets :
Dans R, différents types d'objets peuvent être crées et traités. Ce thème sera repris en plus de détails dans l'article [[Les données R]].
 
==== Types simples ====
 
Voici les principaux types d'objets :
<source lang="matlab">
<source lang="matlab">
  a <- NULL # a est un objet nul, vide
  a <- NULL # a est un objet nul, vide
Ligne 114 : Ligne 176 :
</source>
</source>


Pour connaître le mode (type) d'un objet, utilisez la '''''commande mode()'''''. Ci dessous montrée avec les résultats affichés par R.
Pour connaître le mode (type) d'un objet, utilisez la soit la commande <code>mode()</code> soit la commande <code>typeof</code>. Ci dessous montrée avec les résultats affichés par R.


<source lang="matlab">
<source lang="matlab">
Ligne 123 : Ligne 185 :
> mode(b)
> mode(b)
[1] "logical"
[1] "logical"
> mode(c)
> typeof(c)
[1] "numeric"
[1] "numeric"
> mode(d)
> mode(d)
Ligne 130 : Ligne 192 :


Pour afficher la valeur d'un objet, on peut utiliser la fonction '''''print()'''''. Altérnativement on peut introduire tout simplement le nom de l’objet à afficher :
Pour afficher la valeur d'un objet, on peut utiliser la fonction '''''print()'''''. Altérnativement on peut introduire tout simplement le nom de l’objet à afficher :
print(Poids)
<source lang="matlab">
print(Poids)
  Poids
  Poids
print(a)
print(a)
  a
  a
 
</source>
Pour lister les objets existant dans la session de R, utilisez la fonction '''''ls()''''' ou '''''objects()''''' :
Pour lister les objets existant dans la session de R, utilisez la fonction '''''ls()''''' ou '''''objects()''''' :
ls()
<source lang="matlab">
objects()
ls()
objects()
</source>


Enfin, on peut supprimer des objets avec la fonction '''''rm()''''' :
Enfin, on peut supprimer des objets avec la fonction '''''rm()''''' :
<source lang="matlab">
  rm(Poids) # L'objet Poids est supprimé
  rm(Poids) # L'objet Poids est supprimé
  rm(a) # L’objet a est supprimé
  rm(a) # L’objet a est supprimé
  rm(b, c, d) # Les objets b, c et d sont supprimés
  rm(b, c, d) # Les objets b, c et d sont supprimés
 
</source>
Dans les prochaines sections, nous présenterons les objets fondamentaux de R : les vecteurs, les matrices et les data-frames.  
Dans les prochaines sections, nous présenterons brièvement les objets fondamentaux de R : les vecteurs, les matrices et les data-frames. Plus de détails seront présentés dans l'article [[les données R]]


==== Les vecteurs ====
==== Les vecteurs ====


Un vecteur est un objet atomique représentant une "ligne" de données: tous ses éléments sont caractérisés par le même mode (ou type). Plusieurs méthodes peuvent être utilisées pour générer un '''vecteur numérique'''. Le plus important est le collecteur '''''c()''''' :
Un vecteur est un objet atomique représentant une "ligne" de données: tous ses éléments sont caractérisés par le même mode (ou type). Plusieurs méthodes peuvent être utilisées pour générer un '''vecteur numérique'''. Le plus important est le collecteur '''''c()''''' :
<source lang="matlab">
  c(3, 4, 1, 3) # vecteur numérique de longueur 4
  c(3, 4, 1, 3) # vecteur numérique de longueur 4
</source>


Altérnativement, vous pouvez utiliser l'opérateur <code>:</code> , la fonction <code>seq</code> et la fonction <code>rep</code> :
Pour générer un '''vecteur alphanumérique''', utilisez le collecteur '''''c()''''' associé à des guillemets :
<source lang="matlab">
<source lang="matlab">
  1:15
  ma_liste = c('H', 'F', 'F', 'H', 'F')
seq(1,5, by = 0.2)
seq(1,5, length=10)
rep(1,10)
rep(1:3, times = 3)
rep(1:3, each = 3)
rep(1:3, times = 3, each = 2)
</source>
</source>
Pour générer un '''vecteur alphanumérique''', utilisez le collecteur '''''c()''''' associé à des guillemets :
c('H', 'F', 'F', 'H', 'F')
Alternativement, vous pouvez utiliser la fonction <code>rep()</code> :
rep('H', 20)
Pour générer un '''vecteur logique''', utilisez les opérateurs '''''>, >=, <, <=, ==, !=''''' :
10 == (2+1) # Donne FALSE car 10 est différent de 3
10 != 3 # Donne TRUE car 10 est différent de 3
10 >= 7 # Donne TRUE car 10 est supérieur égal à 7
1:10 == 6 # Donne un vecteur logique de longueur 10. La valeur TRUE apparaît quand la condition est satisfaite ; la valeur FALSE apparaît quand la condition n'est pas satisfaite
Rappelons que les opérateurs '''''<-''''' et '''''->''''' permettent de sauvegarder des objets dans la mémoire de R. Créons un vecteur numérique ''Age'' et un vecteur alphanumérique ''Sexe'' à travers les commandes suivantes :
Age <- c(19, 31, 28, 18, 25, 23, 27, 20)
Sexe <- c('F', 'H', 'F', 'H', 'H', 'F', 'H', 'F')
Affichons enfin les deux vecteurs avec les commandes :
Age
Sexe


Pour sélectionner une partie d'un vecteur, utilisez '''l'opérateur de sélection''' [ ]. Etudiez les exemples suivants :
Pour sélectionner une partie d'un vecteur, utilisez '''l'opérateur de sélection''' [ ]. Etudiez les exemples suivants :
X = 10:20
<source lang="matlab">
  X[3] # Donne le troisième élément du vecteur X
  ma_liste[3] # Donne le troisième élément du vecteur c
X[c(6,9)] # Donne le sixième et neuvième élément du vecteur X
  ma_liste[3:5] # Donne le troisième quatrième et cinquième élément du vecteur X
  X[3:5] # Donne le troisième quatrième et cinquième élément du vecteur X
</source>
X[7:5] # Donne le septième, le sixième et le cinquième élément du vecteur X
X[-c(4,7)] # Donne X sans le quatrième et septième élément du vecteur X
X[-(1:3)] # Donne X sans les trois premiers éléments
X[(X<15)] # Donne les éléments de X inférieur à 15
X[(X<17) & (X>13)] # Donne les éléments de X inférieurs à 17 ET supérieurs à 13
X[(X<13) | (X>17)] # Donne les éléments de X inférieurs à 13 OU supérieurs à 17


==== Les matrices ====
==== Les matrices ====
Ligne 249 : Ligne 285 :
  [1] "a" "b"
  [1] "a" "b"


== Charger des jeux des données de R ==
== L'encodage de fichiers et des interfaces utilisateur ==
 
Aussi surprenant que cela puisse l'être, le support R pour UTF-8 est très pénible. Par défaut Unix et MacOSX travaillent avec UTF-8 alors que Windows travaille avec son système à lui (une sorte de ISO-latin).
 
Cela a comme conséquence qu'il est difficile de travailler sur un même projet depuis plusieurs types d'OS. Un script qui prépare parfaitement un corpus français peut foirer sous Windows et inversement....
 
D'après [https://support.rstudio.com/hc/en-us/articles/200532197-Character-Encoding les concepteurs de RStudio] il faut toujours utiliser le "locale", c'est à dire ne pas forcer Windows à travailler en UTF-8.
 
Dans Windows, on peut spécifier
options(encoding = 'UTF-8')
 
Comme il peut avoir des problèmes avec la commande "source", ce n'est pas forcément la meilleure solution. En tout cas:
* N'utilisez jamais des caractères non-ascii (comme des lettres accentués, etc.) dans votre code R. C'est chercher des ennuis !!
 
Dans le GUI "R-Studio" (uniquement!) il est également possible de:
* File : Reopen with Encoding
* File : Save with Encoding.
 
<code>enc2native();</code> permet de changer un encodage vers la version "native" ....
 
== Utiliser des jeux des données de R ==


=== Les bases de données R ===
=== Les bases de données R ===
Ligne 268 : Ligne 324 :
Dans les prochains chapitres, nous chargerons des jeux des données de R dans le but d'introduire les différentes fonctions de R.
Dans les prochains chapitres, nous chargerons des jeux des données de R dans le but d'introduire les différentes fonctions de R.


=== Importer des bases des données ===
=== Importer des tableaux de données ===
 
Lire aussi:
* [[Importer des données dans R]], un article qui fournira plus de détails et qui discute surtout de l'important d'autres types de données.


Les fonctions '''''read.table()''''' et '''''read.csv()''''' permettent de lire et importer  des fichiers ''.txt'' et ''.csv''.  
Les fonctions '''''read.table()''''' et '''''read.csv()''''' permettent de lire et importer  des fichiers ''.txt'' et ''.csv''.  
Ligne 287 : Ligne 346 :


# Fichier de type CSV depuis un serveur web (ce fichier contient des stats de google webmaster tools pour edutechwiki ...)
# Fichier de type CSV depuis un serveur web (ce fichier contient des stats de google webmaster tools pour edutechwiki ...)
Database <- read.csv("http://tecfa.unige.ch/guides/R/data/edutechwiki-fr-gw-oct-6-2014.csv", header = TRUE, sep= ",")
Database_webmaster <- read.csv("http://tecfa.unige.ch/guides/R/data/edutechwiki-fr-gw-oct-6-2014.csv", header = TRUE, sep= ",")


# Fichier de type Excel qui contient une simple matrice, la première ligne contient les noms de variables
# Fichier de type Excel qui contient une simple matrice, la première ligne contient les noms de variables
Ligne 300 : Ligne 359 :
Voir aussi:
Voir aussi:
* [http://www.statmethods.net/input/importingdata.html Importing Data] (Quick-R)
* [http://www.statmethods.net/input/importingdata.html Importing Data] (Quick-R)
==Swirl : paquet de R pour apprendre R==
[http://swirlstats.com/ Swirl] est un paquet de R qui permet d'apprendre à utiliser R directement à l'intérieur de la console du logiciel. Il suffit donc d'installer le paquet pour disposer d'une série de tutoriels (à partir des bases de R jusqu'à des sujets plus spécifiques comme la régression linéaire ou d'autres éléments statistiques).
===Installation et utilisation===
Pour installer swirl il est suffisant d'installer le paquet correspondant :
install.packages("swirl")
Une fois installé le paquet, il faudra charger le paquet et appeler la fonction swirl() pour démarrer.
library("swirl")
swirl()
Veuillez noter qu'après l'installation du paquet, swirl ne contient pas encore les tutoriels. Car il existe plusieurs tutoriels, swirl vous laisse décider le(s)quel(s) vous souhaitez télécharger.
Lors de l'utilisation, swirl vous demande de vous identifier tout simplement avec un nom d'utilisateur unique. De cette manière, votre avancement dans les tutoriels sera sauvegardé et en utilisant le même username lors d'une autre session vous pouvez reprendre là ou vous vous êtes arrêtés la dernière fois.
Swirl peut être utilisé avec R ou RStudio (choix conseillé).
===Fonctionnement===
Les tutoriels peuvent bien sûr varier en fonction de l'argument traité, mais généralement les interactions suivantes se présentent à l'écran de la console :
* Informations : elles peuvent concerner des informations générales sur le tutoriel, ou des éléments théoriques spécifiques sur l'argument
| In this lesson, we will explore some basic building blocks of the R programming language.
* Instructions : elles demandent une manipulation directe de la console, dans la plupart de cas cela signifie écrire des commandes en R
| In its simplest form, R can be used as an interactive calculator. Type 5 + 7 and press Enter.
> 5 + 7
* Questions : elles demandent également une manipulation, mais sans qu'une instruction explicite soit donnée. Il faut donc mobiliser les connaissances apprises jusqu'à ce moment pour saisir la bonne commande ou choisir la bonne réponse.
| Before we view the contents of the my_sqrt variable, what do you think it  contains?
1: a single number (i.e a vector of length 1)
2: a vector of length 0 (i.e. an empty vector)
3: a vector of length 3
Selection:
* Feedback : suite à une manipulation, swirl propose un feedback qui détermine si la commande était bien celle attendue, et souvent fourni des informations complémentaires.
Voici une capture d'écran qui montre un passage du tutoriel de base "R programming".
[[Fichier:Premiers pas avec R swirl screenshot example.png|cadre|néant| Swirl propose différents types d'interactions et propose également le pourcentage d'avancement dans le tutoriel.]]
===En savoir plus===
Tous les liens sont en anglais:
* [http://swirlstats.com/ Site du projet]
* [http://swirlstats.com/students.html Instructions d'installation]
* [https://github.com/swirldev/swirl_courses Liste des tutoriels sur GitHub]
* [http://swirlstats.com/instructors.html Possibilité de créer des contenus personnalisés (pour enseignants)]

Dernière version du 17 mai 2017 à 17:40

Analytique et exploration de données
Module: Tutoriels R
◀▬▬▶
brouillon intermédiaire
2017/05/17 ⚒⚒ 2014/11/21
Catégorie: Tutoriels R

Introduction à l'environnement R

Voici comment l’environnement R se présente une fois l’application ouverte :

R.png

L’interface de l’environnement R se présente par une fenêtre contenant une barre de menus, une barre d’outils et la console R. Cette dernière permet d’introduire des commandes R (ou expressions).

L’interprétateur de R traduit et exécute les commandes introduites par l’utilisateur.

Le prompt de R est représenté par le symbole > . Ce caractère signifie que l’interprétateur de R attend l’introduction d’une commande de la part de l’utilisateur.

Remarquons que l’interface standard graphique de R paraît élémentaire et peu ergonomique. Plusieurs interfaces graphiques existent et peuvent être installées. Nous recommandons l’installation de R-Commander et R-Studio.

Voici une copie d'écran de R-Studio:

Copie d'écran de R-Studio 0.98

Les paquets / extensions

R possède des nombreuses extensions aussi appelés "bibliothèques" ou (en franglais) "librairies" et que l'on peut installer sous forme de paquet. L'opération peut se faire assez facilement dans R, mais il y a des problèmes parfois. Installer des paquets n'est pas la première priorité si vous utiliser R pour des analyses statistiques, par contre il faut absolument savoir faire ces installations si vous pensez utiliser les paquets "text mining"/analyse de texte. Ces derniers reposent souvent sur des programmes externes et pour lesquels l'environnement doit être préparé également.

Lister les paquets installés et chargés par défaut
getOption("defaultPackages")
[1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"
Liste tous les paquets que vous avez installé
Gardez la syntaxe "étrange" ci-dessous !
(.packages(all.available=TRUE))

Utiliser un paquet

library("nom_du_paquet")

Par exemple: library(tm) library(tm.plugin.webmining) library(SnowballC) library(XML) library(RCurl) library(httr)

Installation de paquets

La plupart des paquets (extensions) de R sont disponibles à travers R. Lors de l'installation, R va vous demander de choisir parmi un dépositoire de code. Choisissez le plus proche ou celui qui vous le plus confiance dans votre réseau.

Exemple "statnet", un logiciel d'analyse de réseaux.

install.packages("statnet")
ou plus verbeux:peut-etre une
install.packages("statnet", dependencies = TRUE)

Alternativement, si vous utilisez RStudio, cliquez sur l'onglet "Packages", puis "Install". Dans la fenêtre popup on peu ensuite indique le nom (ou le début du nom) du package...

Installation de packages R avec RStudio

Essayez d'installer le paque "tm" (text mining). Si tout va bien d'autres paquets suivants sont automatiquement installés par ce "tm". Sous Ubuntu, le processus peut marcher moins bien, surtout pour un ancien système 10.04LTS. Lire plus loin ce qu'il faut faire.'

install.packages("tm", dependencies = TRUE)
install.packages("RCurl", dependencies = TRUE)
install.packages("XML", dependencies = TRUE)
install.packages("SnowballC", dependencies = TRUE)

Si le text mining vous intéresse, installez aussi:

install.packages("tm.plugin.webmining", dependencies = TRUE)
install.packages("koRpus", dependencies = TRUE)

Certains paquets s'installent difficilement et différents raisons:

  • R ne trouve pas un environnement / langage dont il a besoin, par exemple JAVA ou Perl. Il faut que ces langages soit disponibles dans le chemin, les réinstaller si nécessaire. Certains paquets ont besoins du compilateur Java, il faut donc installer le SDK.
  • R nécessite des bibliothèques qu'il faut installer préalablement (par ex. sous Ubuntu, RCurl nécessite libcurl4-openssl-dev et libxml2-dev (voir ci-dessous), et tm nécessite Rpoppler.
Choses à faire en plus sous Ubuntu (important !)

Vérifier qu'un bon kit de dévelopement Java soit installé

Javac

Si c'est pas le cas:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

ou encore

sudo apt-get install oracle-java8-installer

Dans une console Linux (sous root), pour indiquer l'emplacement de Java, taper:

sudo R CMD javareconf

ou encore

sudo R CMD javareconf -e

Il faut également installer préalablement des bibliothèques de développement Curl et XML, sinon vous allez recevoir des messages d'erreurs comme ERROR: configuration failed for package ‘RCurl’, rm: cannot remove 'a.out.dSYM': Is a directory

sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libxml2-dev
sudo apt-get install libpoppler-dev libpoppler-glib-dev

L'aide et la documentation de R

La fonction help.start() permet d’acceder à l’aide en ligne de R.

 help.start()

La fonction help() ou l'abréviation  ? permet d'obtenir de l’aide sur des commandes R spécifiques. Exemples :

help(help) # lance la documentation de la fonction « help » 
?mean # lance la documentation de la fonction « mean »

La fonction help.search() ou l'abréviation?? permet de chercher la documentation

??tm # lance une recherche pour "tm"

La fonction help.library() liste les paquet.

Tapez help(help) pour l'aide complète sur help

Syntaxe du langage R

R est à la fois un langage de programmation et un outil d'analyse de données. Un utilisateur n'est pas obligé de savoir programmer, mais il doit être capable d'utiliser des fonctions. En gros, toutes les commandes à taper font appel à des fonctions.

La syntaxe de R ressemble superficiellement à celle des langages de type "C" et il s'agit d'une implémentation du langage S avec des extensions sémantiques dans la direction du langage Scheme

Commentaires

Le symbole # permet d'ajouter des commentaires dans R. Tout ce qui est écrit après ce symbole n'est pas interprété par R. Prenons l’exemple suivant :

3 + 2 # Ceci est un commentaire... remarquez que R interprète ce qui vient avant le symbole # et nous donne le résultat de l'addition

Les commentaires sont très utiles en programmation pour décrire ce que le code fait.

Les objets de R

Objets et variables

Les objets sont des entités qui sont stockées dans la mémoire de R. Il peut s'agir de nombres, de listes de nombres, de chaînes de caractères, de programmes, etc.

Les opérateurs d’assignation <- et -> permettent à la fois de créer des objets et de les stocker dans des variables de la session de R courante. Exemples :

 Poids <- 80 # La variable Poids reçoit la valeur 80
 80 -> Poids # La variable Poids reçoit la valeur 80
 Poids = 50  # La variable Poids reçoit la valeur 50

On pourrait aussi dire que l'objet nommé "Poids" a la valeur de 80. Un objet existe indépendamment de son nom, mais il est important de créer des variables afin de pouvoir manipuler des objets dans un deuxième moment. Par exemple :

 a <- 32+10
 b <- 10*21
 c <- a + b

Ainsi, si l’utilisateur ne crée pas de variables ; R exécute la commande et affiche l'output à l’écran. Cela dit, ce dernier ne sera pas accessible pour des traitements ultérieurs. Exemple :

 32+10
 10*21
 # Contrairement à lexemple ci-dessus, ici il est impossible de calculer la somme entre (32+10) et (10*21).

Remarquons que si on ne crée pas de variables, R traite les données... mais ces résultats seront inaccessibles pour des traitements successifs.

Types et structures de données

Dans R, différents types d'objets peuvent être crées et traités. Ce thème sera repris en plus de détails dans l'article Les données R.

Types simples

Voici les principaux types d'objets :

 a <- NULL # a est un objet nul, vide
 b <- TRUE # b est un objet logique, booléen
 c <- 101 # c  et Poids sont des objets numériques
 Poids <- 85 
 d <- "Bonjour à tout le monde!" # d est un objet alphanumérique (il contient une chaîne des caractères)

Pour connaître le mode (type) d'un objet, utilisez la soit la commande mode() soit la commande typeof. Ci dessous montrée avec les résultats affichés par R.

> mode(Poids)
[1] "numeric"
> mode(a)
[1] "NULL"
> mode(b)
[1] "logical"
> typeof(c)
[1] "numeric"
> mode(d)
[1] "character"

Pour afficher la valeur d'un objet, on peut utiliser la fonction print(). Altérnativement on peut introduire tout simplement le nom de l’objet à afficher :

print(Poids)
 Poids
print(a)
 a

Pour lister les objets existant dans la session de R, utilisez la fonction ls() ou objects() :

ls()
objects()

Enfin, on peut supprimer des objets avec la fonction rm() :

 rm(Poids) # L'objet Poids est supprimé
 rm(a) # Lobjet a est supprimé
 rm(b, c, d) # Les objets b, c et d sont supprimés

Dans les prochaines sections, nous présenterons brièvement les objets fondamentaux de R : les vecteurs, les matrices et les data-frames. Plus de détails seront présentés dans l'article les données R

Les vecteurs

Un vecteur est un objet atomique représentant une "ligne" de données: tous ses éléments sont caractérisés par le même mode (ou type). Plusieurs méthodes peuvent être utilisées pour générer un vecteur numérique. Le plus important est le collecteur c() :

 c(3, 4, 1, 3) # vecteur numérique de longueur 4

Pour générer un vecteur alphanumérique, utilisez le collecteur c() associé à des guillemets :

 ma_liste = c('H', 'F', 'F', 'H', 'F')

Pour sélectionner une partie d'un vecteur, utilisez l'opérateur de sélection [ ]. Etudiez les exemples suivants :

 ma_liste[3] # Donne le troisième élément du vecteur c
 ma_liste[3:5] # Donne le troisième quatrième et cinquième élément du vecteur X

Les matrices

La matrice est un objet atomique et représente des tables à deux ou plusiers dimensions: tous ses éléments sont caractérisés par le même mode (ou type). Pour créer une matrice utilisez la fonction matrix() :

a1 <- matrix(1:6, ncol=2) # a1 est une matrice 3x2
a2 <- matrix(1:6, nrow=2) # a2 est une matrice 2x3
b1 <- matrix(1:6, ncol=2, byrow = TRUE) # b1 est une matrice 3x2
b2 <- matrix(1:6, nrow=2, byrow = TRUE) # b2 est une matrice 2x3

Pour sélectionner une partie d'une matrice, utilisez l'opérateur de sélection [ ] :

a1[3,2] # Donne l'élément de la matrice a1 qui se situe à la coordonnée [3,2] c'est-à-dire à la troisième ligne et deuxième colonne
a1[2,] # Sélectionne la deuxième ligne de la matrice a1
a1[,2] # Sélectionne la deuxième colonne de la matrice a1
a1[-1,] # Matrice a1 sans sa première ligne
a1[,-1] # Matrice a1 sans sa première colonne
a1[-1,2] # Sélectionne la deuxième colonne de la matrice a1 en excluant la première ligne
a2[,a2[1,]>2] # Sélectionne les colonnes de la matrice a2 pour lesquelles la valeur sur la première ligne est supérieure à 2

Les data frames

Le data-frame est un tableau des données à 2 dimensions dont les colonnes sont des variables de différents modes. Il s'agit de l'objet qu'il faut privilégier pour la recherche en sciences humaines. En effet, dans la plupart des cas, les bases des données sont composées par des variables qualitatives et quantitatives ! La fonction data.frame() permet de créer cet objet :

Age <- c(19, 31, 28, 18, 25, 23, 27, 20)
Sexe <- c('F', 'H', 'F', 'H', 'H', 'F', 'H', 'F')
Database <- data.frame(Age, Sexe) # Database est un data-frame comportant une variable qualitative et une variable quantitative
Database

Pour sélectionner une variable particulière d’un data-frame, vous pouvez utiliser le symbole $ :

Database$Age
Database$Sexe

De manière analogue aux matrices, vous pouvez sélectionner une partie d’un data-frame en utilisant les opérateurs de sélection [ ] :

Database[1,2]
Database[1:4,2]

Les listes

Les listes représentent les structures de données les plus souples. On peut créer des listes dans des listes qui ne doivent pas avoir la même longeur.

my_list_simple = list ( c(1,2,3), c("a","b"))

donne:

> my_list_simple
1
[1] 1 2 3

2
[1] "a" "b"
my_list = list ( liste_une = c(1,2,3), liste_deux= c("a","b"))

donne:

> my_list
$liste_une
[1] 1 2 3

$liste_deux
[1] "a" "b"

L'encodage de fichiers et des interfaces utilisateur

Aussi surprenant que cela puisse l'être, le support R pour UTF-8 est très pénible. Par défaut Unix et MacOSX travaillent avec UTF-8 alors que Windows travaille avec son système à lui (une sorte de ISO-latin).

Cela a comme conséquence qu'il est difficile de travailler sur un même projet depuis plusieurs types d'OS. Un script qui prépare parfaitement un corpus français peut foirer sous Windows et inversement....

D'après les concepteurs de RStudio il faut toujours utiliser le "locale", c'est à dire ne pas forcer Windows à travailler en UTF-8.

Dans Windows, on peut spécifier

options(encoding = 'UTF-8')

Comme il peut avoir des problèmes avec la commande "source", ce n'est pas forcément la meilleure solution. En tout cas:

  • N'utilisez jamais des caractères non-ascii (comme des lettres accentués, etc.) dans votre code R. C'est chercher des ennuis !!

Dans le GUI "R-Studio" (uniquement!) il est également possible de:

  • File : Reopen with Encoding
  • File : Save with Encoding.

enc2native(); permet de changer un encodage vers la version "native" ....

Utiliser des jeux des données de R

Les bases de données R

R permet d'enregistrer des données. Souvent, un paquet vient avec un jeu de données test que vous pouvez charger pour s'approprier les fonctionalitées documentées.

La fonction data() permet de récupérer des bases des données qui existent dans R afin de les manipuler, analyser, traiter dans un deuxième moment :

data() # Permet d'afficher les bases des données de R pouvant être récupérées
data(iris) # Permet de charger en mémoire la base des données « iris ».
help(iris) # Lance l’aide associée à la base des données « iris ». 
ls() # Remarquons l’existence de l’objet « iris », qui a été chargé en mémoire
iris

La fonction de ces bases de données est strictement pédagogique : elles permettent à l’utilisateur de tester aisément les différentes fonctions et commandes de R sur différents bases des données. Par exemple, nous pouvons résumer l'information contenue dans l'objet iris avec la commande suivante :

summary(iris)

Dans les prochains chapitres, nous chargerons des jeux des données de R dans le but d'introduire les différentes fonctions de R.

Importer des tableaux de données

Lire aussi:

Les fonctions read.table() et read.csv() permettent de lire et importer des fichiers .txt et .csv.

R peut directement lire un fichier depuis un URL.

L'intégration de la fonction file.choose() permet à l'utilisateur de sélectionner un fichier.

# Le fichier data.txt est lu est stocké dans un nouveau objet R nommé Database
Database <- read.table("data.txt", header = TRUE)

# Le séparateur utilisé dans le fichier délimité est la virgule
Database <- read.table(file.choose(), header = TRUE, sep = ",")

# Fichier de type CSV. Le séparateur utilisé dans le fichier csv est le point-virgule
Database <- read.csv(file.choose(), header = TRUE, sep= ";")

# Fichier de type CSV depuis un serveur web (ce fichier contient des stats de google webmaster tools pour edutechwiki ...)
Database_webmaster <- read.csv("http://tecfa.unige.ch/guides/R/data/edutechwiki-fr-gw-oct-6-2014.csv", header = TRUE, sep= ",")

# Fichier de type Excel qui contient une simple matrice, la première ligne contient les noms de variables
library(xlsx)
Database <- read.xlsx("c:/dks/myexcel.xlsx", 1)

Visualiser les tableaux:

  • Dans RStudio, cliquer sur le variable (par ex. "Database" ci-dessus) dans le panneau Environment
  • Sinon, utilisez: summary(DB), dim(Database), etc.

Voir aussi:

Swirl : paquet de R pour apprendre R

Swirl est un paquet de R qui permet d'apprendre à utiliser R directement à l'intérieur de la console du logiciel. Il suffit donc d'installer le paquet pour disposer d'une série de tutoriels (à partir des bases de R jusqu'à des sujets plus spécifiques comme la régression linéaire ou d'autres éléments statistiques).

Installation et utilisation

Pour installer swirl il est suffisant d'installer le paquet correspondant :

install.packages("swirl")

Une fois installé le paquet, il faudra charger le paquet et appeler la fonction swirl() pour démarrer.

library("swirl")
swirl()

Veuillez noter qu'après l'installation du paquet, swirl ne contient pas encore les tutoriels. Car il existe plusieurs tutoriels, swirl vous laisse décider le(s)quel(s) vous souhaitez télécharger.

Lors de l'utilisation, swirl vous demande de vous identifier tout simplement avec un nom d'utilisateur unique. De cette manière, votre avancement dans les tutoriels sera sauvegardé et en utilisant le même username lors d'une autre session vous pouvez reprendre là ou vous vous êtes arrêtés la dernière fois.

Swirl peut être utilisé avec R ou RStudio (choix conseillé).

Fonctionnement

Les tutoriels peuvent bien sûr varier en fonction de l'argument traité, mais généralement les interactions suivantes se présentent à l'écran de la console :

  • Informations : elles peuvent concerner des informations générales sur le tutoriel, ou des éléments théoriques spécifiques sur l'argument
| In this lesson, we will explore some basic building blocks of the R programming language.
  • Instructions : elles demandent une manipulation directe de la console, dans la plupart de cas cela signifie écrire des commandes en R
| In its simplest form, R can be used as an interactive calculator. Type 5 + 7 and press Enter.
> 5 + 7
  • Questions : elles demandent également une manipulation, mais sans qu'une instruction explicite soit donnée. Il faut donc mobiliser les connaissances apprises jusqu'à ce moment pour saisir la bonne commande ou choisir la bonne réponse.
| Before we view the contents of the my_sqrt variable, what do you think it  contains?
1: a single number (i.e a vector of length 1)
2: a vector of length 0 (i.e. an empty vector)
3: a vector of length 3
Selection: 
  • Feedback : suite à une manipulation, swirl propose un feedback qui détermine si la commande était bien celle attendue, et souvent fourni des informations complémentaires.

Voici une capture d'écran qui montre un passage du tutoriel de base "R programming".

Swirl propose différents types d'interactions et propose également le pourcentage d'avancement dans le tutoriel.

En savoir plus

Tous les liens sont en anglais: