diff --git a/INSA/TP anadon/TP1-InitR.html b/INSA/TP anadon/TP1-InitR.html deleted file mode 100644 index 81f3bcc..0000000 --- a/INSA/TP anadon/TP1-InitR.html +++ /dev/null @@ -1,3066 +0,0 @@ - - - - - - - - - - - - - -TP 1 : Initiation au langage R. Découverte de Rstudio et Rmarkdown - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
-
-
-
-
- -
- - - - - - - - -

Objectif

-

Les objectifs de cette séance sont

-
    -
  • une première prise en main du logiciel R avec la présentation de -commandes de base
  • -
  • se familiariser avec RStudio
  • -
  • débuter dans la rédaction de documents en Rmarkdown
  • -
-
-

1 Introduction

-
-

1.1 Pourquoi R ?

-

Le logiciel R sous licence GNU est facile à installer à partir de la -page du CRAN (ou d’un site miroir). Le CRAN contient toutes -les ressources nécessaires à l’utilisateur de R, débutant ou expérimenté -: fichiers d’installation, mises à jour, librairies, FAQ, newsletter, -documentation… R est un logiciel très utilisé dans la communauté -statistique.

-

Dans sa structure, R est un langage de programmation d’une syntaxe -voisine à celle du langage C et capable de manipuler des objets -complexes sous forme de matrice, scalaire, vecteur, liste, facteur et -aussi data frame. Il dispose également d’une très riche librairie de -quasiment toutes les procédures et méthodes statistiques de la -littérature. Plus précisément, toutes les recherches récentes sont -d’abord développées et diffusées à l’aide de ce logiciel par la -communauté scientifique.

-
-
-

1.2 Présentation de -Rstudio

-

Nous allons utiliser RStudio durant les TP d’Analyse de Données. RStudio -n’est pas qu’une interface graphique pour R, il s’agit d’un -environnement de développement intégré, proposant des outils et facilite -l’écriture de scripts et l’utilisation de R. La version gratuite de -RStudio étant déjà très riche en fonctionnalités, elle est suffisante -pour les enseignements. Elle est disponible pour Linux, Windows et -MacOS.

-

Sur les ordinateurs en salle TP, sous linux,

-
    -
  • à partir d’un terminal, placez vous dans le répertoire de travail et -tapez la commande rstudio
  • -
  • par le menu déroulant, allez dans -Applications/Programmation/RStudio
  • -
-

Si vous souhaitez travailler sur votre propre ordinateur, installez -tout d’abord la dernière version du logiciel R (voir CRAN) -puis installez la version gratuite de Rstudio adaptée à votre OS.

-
-

1.2.1 Description des -fenêtres de RStudio

-

A chaque ouverture de RStudio, l’écran est découpé en quatre grandes -zones :

-
    -
  • En bas à gauche c’est la Console, on peut y lire -au lancement la version de R que RStudio a chargé. Après le texte -d’entrée, la ligne commence par > qui est l’invite de -commande. RStudio est prêt à recevoir votre première commande. On peut -se servir de R comme d’une calculatrice. Vous pouvez par exemple taper -> 2+3 et taper Entrée. Le résultat apparait -alors dans la console.

  • -
  • En haut à droite, on peut voir dans -Environnement la liste des objets et fonctions créés au -fur et à mesure du travail. On a également accès à l’historique des -commandes dans History.

  • -
  • En bas à droite, on trouve plusieurs onglets :

    -
      -
    • Files : permet de voir le contenu du répertoire de -travail
    • -
    • Plots : permet de visualiser les graphiques -créés
    • -
    • Packages : liste les packages installés pour les -charger, mettre à jour, en installer d’autres
    • -
    • Help : permet d’accéder à l’aide en ligne
    • -
  • -
  • En haut à gauche, c’est la zone d’Edition pour -gérer les scripts, les executer, ….

  • -
-

Lorsque vous quittez RStudio, on vous demande si vous souhaiter -sauvegarder l’environnement de travail. Si vous y répondez -favorablement, un fichier de sauvegarde .RData est -enregistré dans le répertoire courant.

-
-
-

1.2.2 Types de documents -avec RStudio

-

En allant dans File -> New File ou en cliquant sur la -flèche à côté de l’icone de New File (en haut à gauche), -RStudio propose de nombreux types de document. Vous pouvez noter que -l’on peut utiliser RStudio également pour faire du python, du C++, … -Nous allons ici ne parler que de quelques types de fichiers que l’on -utilisera par la suite.

-

Pour créer un script R, il suffit de sélectionner -R Script. Ce script peut être enregistré à tout moment dans -un fichier avec l’extension ” .R” (ex. monScript.R) dans le -répertoire courant en cliquant sur l’icône de disquette ou par -File->Save. Vous pouvez l’ouvrir à tout moment grâce au -menu File –> Open file..., à l’icône dossier ou en -double cliquant sur le fichier monScript.R. Il est également -possible d’executer un script directement depuis la console grâce à la -commande source("monScript.R").

-

On peut également créer des documents de type rapport, slides, … -contenant du texte, du code, des images, des formules mathématiques en -latex, ….

-
    -
  • à l’aide de RMarkdown en sélectionnant -R markdown .... Le document créé sera sauvegardé avec -l’extension ” .Rmd”. On reviendra plus précisément sur les possibilités -offertes par Rmarkdown et les commandes principales pour débuter la -rédaction d’un rapport dans la section suivante.

  • -
  • à l’aide de quarto en sélectionnant -Quarto Document ... ou Quarto Presentation ... -pour la création de présentation, rapports, … Par exemple les slides du -cours d’Analyse de Données ont été générés en quarto. La syntaxe est -assez proche de celle de Rmarkdown.

  • -
-
-
-
-

1.3 Environnement

-
-

1.3.1 Répertoire de -travail

-

Pour pouvoir récupérer des données, maîtriser la sauvegarde des -scripts, des résultats, … il est important de connaitre le répertoire de -travail c’est-à-dire le répertoire sous lequel les divers résultats -seront sauvegardés par défaut. Ce dernier s’obtient à l’aide de la -commande > getwd().

-

Pour changer de répertoire de travail, on peut

-
    -
  • utiliser la commande setwd() dans la Console. A noter -que R ne reconnaît que le caractère “/” pour spécifier le chemin d’accès -d’un répertoire (même sous Windows).
  • -
  • passer par -Session -> Set Working Directory -> Choose Directory.
  • -
-

- -

-Exercice : -

-
-

-
-

Créer un dossier de travail pour ce TP dans votre home (en dehors de -RStudio!) Dans RStudio, placez-vous dans ce dossier de travail pour le -TP.

-
-
-
-

1.3.2 Les librairies pour -R

-

R est un logiciel libre, il s’enrichit grâce au développement de -librairies par la communauté. La plupart des extensions sont développées -et maintenues par la communauté des utilisateurs de R, et diffusées via -le CRAN -(Comprehensive R Archive Network). On peut également trouver des -packages déposés sur github par exemple.

-

A la première ouverture de RStudio sur les ordinateurs de salle TP, -un dossier R/libs est créé dans votre home -pour l’installation des librairies.

-

Pour installer une librairie disponible sur le CRAN, vous avez -plusieurs manières de le faire, dont

-
    -
  • passer par le menu Tools-> Install Packages ... , -sélectionner un site miroir du CRAN et demander la librairie -souhaitée
  • -
  • aller dans l’onglet Packages dans la fenêtre en bas à -droite et cliquer sur Install.
  • -
  • utiliser la fonction install.packages() directement -dans la console en précisant la librairie souhaitée
  • -
-

Toutes les librairies ne sont pas chargées automatiquement au -lancement de R. Pour charger une librairie, on utilise la commande -library().

-

- -

-Exercice : -

-
-

-
-
    -
  1. Installez la librairie corrplot
  2. -
  3. Chargez la librairie corrplot
  4. -
-
-
-
-

1.3.3 L’aide de R

-

On peut à tout moment faire appel à l’aide intégrée de R (et surtout -avant d’appeler l’enseignant-e !) pour avoir les détails comme les -arguments d’une fonction. On peut accéder à l’aide pour une fonction (ex -pour la fonction plot) en passant le nom de la fonction dans -help() (ex > help(plot)) ou en utilisant le -raccourci > ?plot. Ces deux commandes permettent -d’afficher une page de description (en anglais) de la fonction, ses -paramètres, son résultat, d’exemples, … Dans RStudio, les pages d’aide -en ligne s’ouvriront par défaut dans la zone en bas à droite, sous -l’onglet Help. Un clic sur l’icône en forme de maison -vous affichera la page d’accueil de l’aide. Vous pouvez aussi taper -directement le nom de la fonction recherchée dans la zone de recherche -dans l’onglet Help.

-

- -

-Exercice : -

-
-

-
-

Accédez à l’aide de la fonction rnorm

-
-
-
-
-

1.4 Editer des rapports -avec Rmarkdown

-

L’extension Rmarkdown permet de créer des -documents dans différents formats (html, pdf, docx, slides, …) qui -contiennent du texte, du code (en R mais pas que!), les résultats, … Par -exemple, les sujets de TP de ce cours sont rédigés en Rmarkdown.
-Vous devrez également rédiger le rapport de votre projet en Rmarkdown. -Nous allons donner ici des éléments de base pour la création de -documents avec Rmarkdown. Pour plus de détails, vous pouvez consulter -l’aide mémoire de Rmarkdown (accessible via -Help -> Cheatsheets -> Rmarkdown Cheat Sheet) et le -livre en ligne R Markdown: The Definitive Guide de Y. Xie, J. J. -Allaire, G. Grolemund.

-
-

1.4.1 Etapes de création -d’un document

-

Un document Rmarkdown est un fichier enregistré avec l’extension -.Rmd. Pour créer un nouveau document, allez dans -File-> NewFile-> Rmarkdown... (ou cliquez sur l’icone -nouveau document et choisissez Rmarkdown).

-

- -

-Exercice : -

-
-

-
-

Créez un nouveau document Rmarkdown au format pdf avec le titre et -l’auteur de votre choix. Vous pouvez constater qu’un nouveau document -prérempli vient de s’ouvrir dans RStudio. Nous allons maintenant -détailler le contenu de ce document.

-
-

Un document Rmarkdown débute toujours par l’en-tête -qui est encadré par 3 tirets ---. Cet en-tête contient au -moins les métadonnées du document suivantes : le titre, l’auteur, la -date, le format de sortie (output). On peut préciser des -options au document final en ajoutant des sous-options à droite du -output. Il est également possible de spécifier des options -différentes selon les formats. Voici une liste avec quelques éléments -:

-
    -
  • number_section : true permet de numéroter les -sections
  • -
  • highlight permet de spécifier le style syntaxique (par -ex default, tango, pygments, -kate, …).
  • -
  • on peut ajouter son propre fichier de style .css avec l’option -css
  • -
  • on peut préciser des options concernant les figures avec -fig_width, fig_height, -fig_caption, dev, …
  • -
  • on peut ajouter une bibliographie à partir d’un fichier -.bib avec l’option bibliography
  • -
-

On a ensuite le corps du document qui peut contenir

-
    -
  • du texte selon la syntaxe markdown
  • -
  • des blocs de code (appelés chunks) en R, Python, …
  • -
  • des formules mathématiques (écrites en latex entre -$ ... $)
  • -
  • des images, tableaux, références, ….
  • -
-

Vous pouvez compiler à tout moment le document Rmarkdown en cliquant -sur le bouton Knit. Un onglet R Markdown s’ouvre alors dans -la même zone que l’onglet Console pour indiquer la progression -de la compilation et les messages d’erreur éventuels. Une fois la -compilation effectuée, le document obtenu s’ouvre et vous pouvez admirer -le rendu.

-

Remarque: Pour la compilation d’un document en pdf, -il est nécessaire d’avoir installé un compilateur de Latex sur son -ordinateur.

-

- -

-Exercice : -

-
-

-
-

Modifiez les options dans l’en-tête de votre fichier Rmarkdown puis -compilez le document pour constater l’impact sur le document généré.

-
-
-
-

1.4.2 Quelques éléments -markdown

-

Le texte d’un document Rmarkdown est régi par le langage markdown. -Regardez les quelques éléments de syntaxe et de mise en forme disponible -ici ou consulter l’aide mémoire de Rmarkdown -(accessible via -Help -> Cheatsheets -> Rmarkdown Cheat Sheet).

-

Remarque: Si vous avez organisé votre document avec -des sections / sous-sections en faisant débuter une ligne par un ou -plusieurs #, alors vous pouvez cliquer sur l’icone -Outline à droite de la barre d’outils associée au fichier R -Markdown pour visualiser la table des matières générée automatiquement -qui vous permet de naviguer facilement dans le document.

-

Pour insérer du code dans un document Rmarkdown, on utilise des blocs -appelés chunk. Pour cela, il suffit de cliquer sur -l’icone d’insertion d’un chunk dans la barre d’outils d’un document -Rmarkdown. Il est possible d’insérer un chunk de code R mais pas -seulement (par exemple on peut insérer du code Python). Pour du code R, -un chunk de la forme \(\textrm{```{r} .... -```}\) s’insère alors dans le document. On peut alors saisir du -code R dans ce chunk. On peut ajouter un nom à un bloc et préciser des -options dans les accolades {r nomdubloc, ....}, par -exemple

-
    -
  • eval (TRUE par défaut, ou FALSE) : détermine si le code R doit être -évalué ou non,
  • -
  • echo (TRUE par défaut, ou FALSE) : détermine si le code R doit être -affiché ou non,
  • -
  • results (‘markup’ par défaut, ‘hide’, ‘hold’ ou ‘asis’) : détermine -comment les sorties doivent être affichées,
  • -
  • error (FALSE par défaut, ou TRUE) : détermine si les messages -d’erreur doivent être affichée,
  • -
  • warning (TRUE par défaut, ou FALSE) : détermine si les messages -d’avertissement doivent être affichées.
  • -
-

Ces options peuvent être modifiées manuellement ou en utilisant -l’interface graphique (en cliquant sur l’icone d’engrenage situé en haut -à droite de chaque bloc).

-

- -

-Exercice : -

-
-

-
-
    -
  • Ajoutez # Titre 1 avant ## RMarkdown
  • -
  • Modifiez {r cars} en {r cars, eval=F}
  • -
  • Compilez le document pour voir les différences
  • -
-
-

De manière générale, il est recommandé de

-
    -
  • travailler dans le document R Markdown (en lançant balise R par -balise R, avec la petite flèche verte en haut à droite de chaque bloc, -ou en lançant la ligne de code contenant le curseur en tapant Ctrl -Enter),
  • -
  • commenter les résultats obtenus (en dehors des balises R) au fur et -à mesure,
  • -
  • ne compiler le document (Knit) qu’à la fin.
  • -
-

Pour la suite du TP, récupérez sur moodle le document -“TP1-InitR.Rmd”, sauvegardez-le dans votre dossier de travail et -ouvre-le dans RStudio. C’est le document .Rmd qui a généré cet énoncé de -TP et que vous allez compléter dans la suite.

-
-
-
-
-

2 Structure des objets en -R

-

Sous R, les éléments de base sont des objets : des données (vecteurs, -matrices, …), des fonctions, des graphiques, … Ces objets se -différencient par leur mode décrivant leur contenu, et leur classe -décrivant leur structure. Les classes d’objets les plus courantes sont : -vector, matrix, array, factor, data.frame, list. On -peut avoir des vecteurs, matrices, tableaux, … de mode -null (objet vide), logical (TRUE, -FALSE, NA), numeric, complex, -character. Par contre les listes et les tableaux -peuvent être composés d’éléments hétérogènes. On utilise la commande -class() pour connaître la classe d’un objet et -str()pour connaitre la nature des éléments composant -l’objet.

-

Nous allons dans ce TP présenter certains de ces objets, les -opérations et manipulations basiques que l’on peut faire, …

-

Remarque : On stocke un objet dans une variable a à l’aide -de a<- ... ou a= .... Pour lister les -variables actuellement disponibles dans la session de travail, on -utilise la fonction ls(). Pour effacer une ou plusieurs -variables, on utilise la fonction rm(). La commande -rm(list=ls()) permet d’effacer toutes les variables en -mémoire.

-
-

2.1 -Opération sur les scalaires

-
-

2.1.1 Opérations

-

Les opérations élémentaires sur les scalaires sont -*,-, +, /, -^.
-

-

Executez les commandes suivantes. Vous chercherez en particulier à -bien identifier les différents types de données :

-
2 + 2
-exp(10)
-a = log(2)
-a
-b = cos(10)
-b
-a - b
-a * b
-d <- 2 < 3
-d
-dd <- FALSE
-dd - d
-dd + d
-e <- "toto"
-class(e)
-str(e)
-
-
-

2.1.2 -is.xxx()/as.xxx()

-

Pour tester si un objet obj est de type xxx, on -utilise la commande is.xxx(obj). On peut aussi contraindre -si possible l’objet obj au type xxx avec la commande -as.xxx(obj).

-
a = 4.3
-is.numeric(a)
-
[1] TRUE
-
is.complex(a)
-
[1] FALSE
-
is.character(a)
-
[1] FALSE
-
as.character(a)
-
[1] "4.3"
-
b <- "toto"
-is.numeric(b)
-
[1] FALSE
-
as.list(b)
-
[[1]]
-[1] "toto"
-
-
-

2.1.3 Arrondir

-

Pour obtenir des valeurs arrondies sur des valeurs numériques, vous -pouvez utiliser l’une des commandes suivantes round(), -ceiling(), floor(), trunc() ou -signif() (voir l’aide ?round). Comparez les -codes suivantes:

-
a = 1.3579
-floor(a)
-
[1] 1
-
ceiling(a)
-
[1] 2
-
round(a, digits = 2)
-
[1] 1.36
-
signif(a, digits = 2)
-
[1] 1.4
-
is.integer(floor(a))
-
[1] FALSE
-
is.numeric(floor(a))
-
[1] TRUE
-
-
-
-

2.2 -Booléens et opérations logiques

-

En R, un booléen est représenté par TRUE ou FALSE. -Les opérations logiques, <, >, -<=, >=, != (différent), -== (égal) retournent TRUE ou FALSE. On -peut définir plusieurs conditions à remplir avec les opérateurs -& (ET) et | (OU).

-

Attention, R considère que le booléen FALSE vaut \(0\) et le booléen TRUE vaut \(1\). Il est donc capable d’évaluer -TRUE + 5 bien qu’en toute logique, cela n’a aucun sens!

-

Voici quelques exemples de manipulation des booléens pour comprendre -:

-
a = 3
-b = 6
-a <= b
-
[1] TRUE
-
a != b
-
[1] TRUE
-
(b - 3 == a) & (b >= a)
-
[1] TRUE
-
(b == a) | (b >= a)
-
[1] TRUE
-
-
-

2.3 -Vecteurs (vector)

-

Un vecteur est un ensemble ordonné d’éléments de même nature -(numérique, logique ou alphanumérique). La création d’un vecteur peut se -faire par la commande c(e1,e2,...). On peut également -générer une séquence avec la commande seq(a,b,t)\(a\) est le premier terme, le dernier terme -est \(\leq b\) et le pas est \(t\). Pour créer un vecteur constitué de -l’élément \(x\) répété \(n\) fois, on utilise la commande -rep(x,n).

-

On donne ici quelques exemples à tester sous R pour vous familiariser -avec les vecteurs. En particulier, vous pouvez découvrir des fonctions -utiles avec les vecteurs comme length(), -sum(), sort(), … , les opérations usuelles, -l’extraction d’éléments d’un vecteur, …

-
-

2.3.1 Commande -c(...)

-
d <- c(2, 3, 5, 8, 4, 6)
-d
-
[1] 2 3 5 8 4 6
-
is.vector(d)
-
[1] TRUE
-
c(2, 5, "toto")
-
[1] "2"    "5"    "toto"
-
1:10
-
 [1]  1  2  3  4  5  6  7  8  9 10
-
-
-

2.3.2 Commande -seq(...)

-
seq(1, 10)
-
 [1]  1  2  3  4  5  6  7  8  9 10
-
seq(from = 1, to = 20, by = 2)
-
 [1]  1  3  5  7  9 11 13 15 17 19
-
seq(1, 20, by = 5)
-
[1]  1  6 11 16
-
seq(1, 20, length = 5)
-
[1]  1.00  5.75 10.50 15.25 20.00
-
-
-

2.3.3 Commande -rep(...)

-
rep(5, times = 10)
-
 [1] 5 5 5 5 5 5 5 5 5 5
-
rep(c(1, 2), 3)
-
[1] 1 2 1 2 1 2
-
rep(c(1, 2), each = 3)
-
[1] 1 1 1 2 2 2
-
-
-

2.3.4 Extraire des -éléments

-
d
-
[1] 2 3 5 8 4 6
-
d[2]
-
[1] 3
-
d[2:3]
-
[1] 3 5
-
d[c(1, 3, 6)]
-
[1] 2 5 6
-
d[-3]
-
[1] 2 3 8 4 6
-
d[-(1:2)]
-
[1] 5 8 4 6
-
-
-

2.3.5 Opérations

-

Additionner ou soustraire un scalaire d’un vecteur

-
d + 4
-
[1]  6  7  9 12  8 10
-
d - 4
-
[1] -2 -1  1  4  0  2
-

Multiplier ou diviser un vecteur par un scalaire

-
2 * d
-
[1]  4  6 10 16  8 12
-
d/3
-
[1] 0.6666667 1.0000000 1.6666667 2.6666667 1.3333333 2.0000000
-

Multiplier/ diviser deux vecteurs terme à terme

-
e <- rep(2, 6)
-d * e
-
[1]  4  6 10 16  8 12
-
d/e
-
[1] 1.0 1.5 2.5 4.0 2.0 3.0
-
-
-

2.3.6 Fonctions -usuelles

-
d = c(2, 3, 5, 8, 4, 6)
-d
-
[1] 2 3 5 8 4 6
-

Longueur d’un vecteur

-
length(d)
-
[1] 6
-

Somme des termes d’un vecteur numérique

-
sum(d)
-
[1] 28
-

Somme des termes cumulés d’un vecteur numérique

-
cumsum(d)
-
[1]  2  5 10 18 22 28
-

Différence des termes successifs d’un vecteur numérique

-
diff(d)
-
[1]  1  2  3 -4  2
-

Vérifier si d est un vecteur

-
is.vector(d)
-
[1] TRUE
-

Autres fonctions intéressantes avec les vecteurs : -abs(), sort(), order(), -which(), …

-
a <- c(3, -1, 5, 2, -7, 3, 9)
-abs(a)
-
[1] 3 1 5 2 7 3 9
-
sort(a)
-
[1] -7 -1  2  3  3  5  9
-
order(a)
-
[1] 5 2 4 1 6 3 7
-
which(a < 0)
-
[1] 2 5
-

On peut appliquer une fonction à tous les éléments d’un vecteur -facilement.

-
cos(a)
-
[1] -0.9899925  0.5403023  0.2836622 -0.4161468  0.7539023 -0.9899925 -0.9111303
-
-
-

2.3.7 Exercice

-
-

Construire

-
    -
  • le vecteur \(a\) constitué des -entiers pairs jusqu’à 30
  • -
  • le vecteur \(b\) contenant 6 -chiffres compris entre 4 et 30 avec un intervalle constant.
  • -
  • le vecteur \(c\) contenant la somme -des éléments de \(b\), la longueur de -\(a\) et 5 fois le chiffre 3.
  • -
-

Extraire du vecteur \(c\) le

-
    -
  • le quatrième élément
  • -
  • tous les éléments sauf le quatrième
  • -
  • tous les éléments supérieurs à 10
  • -
-
-
# A COMPLETER POUR REPONDRE A L'EXERCICE
-
-
-
-

2.4 -Matrices (matrix)

-

Comme les vecteurs, les matrices sont de mode quelconque mais ne -contiennent que des éléments de même nature. Pour créer une matrice, on -utilise la commande matrix(vec,nrow=n,ncol=p) où -vec est le vecteur contenant les éléments de la matrice de -taille \(n\) par \(p\), qui seront rangés en colonne sauf si -l’option byrow=T est utilisée.

-

On donne ici quelques exemples à tester sous R pour vous familiariser -avec les matrices. En particulier, vous pouvez découvrir des fonctions -utiles avec les matrices comme dim(), t(), -cbind(), rbind()… , les opérations usuelles -dont la différence entre A*B et A%*%B, -l’extraction d’éléments d’une matrice, …

-
-

2.4.1 -matrix()

-
A = matrix(1:15, ncol = 5)
-A
-
     [,1] [,2] [,3] [,4] [,5]
-[1,]    1    4    7   10   13
-[2,]    2    5    8   11   14
-[3,]    3    6    9   12   15
-
B = matrix(1:15, nc = 5, byrow = T)
-B2 = B
-B2[1, 1] = "toto"
-B2
-
     [,1]   [,2] [,3] [,4] [,5]
-[1,] "toto" "2"  "3"  "4"  "5" 
-[2,] "6"    "7"  "8"  "9"  "10"
-[3,] "11"   "12" "13" "14" "15"
-
rownames(A) = c(paste("ligne", 1:3, sep = ""))
-A
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    1    4    7   10   13
-ligne2    2    5    8   11   14
-ligne3    3    6    9   12   15
-
-
-

2.4.2 Extraire

-
A
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    1    4    7   10   13
-ligne2    2    5    8   11   14
-ligne3    3    6    9   12   15
-
A[1, 3]
-
ligne1 
-     7 
-
A[, 2]
-
ligne1 ligne2 ligne3 
-     4      5      6 
-
A[2, ]
-
[1]  2  5  8 11 14
-
A[1:3, c(2, 5)]
-
       [,1] [,2]
-ligne1    4   13
-ligne2    5   14
-ligne3    6   15
-
A[1:3, -c(2, 5)]
-
       [,1] [,2] [,3]
-ligne1    1    7   10
-ligne2    2    8   11
-ligne3    3    9   12
-
-
-

2.4.3 -cbind() / rbind()

-

Pour concaténer deux matrices, on peut utiliser les fonctions -rbind() ou cbind().

-
A
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    1    4    7   10   13
-ligne2    2    5    8   11   14
-ligne3    3    6    9   12   15
-
B
-
     [,1] [,2] [,3] [,4] [,5]
-[1,]    1    2    3    4    5
-[2,]    6    7    8    9   10
-[3,]   11   12   13   14   15
-
cbind(A, B)
-
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
-ligne1    1    4    7   10   13    1    2    3    4     5
-ligne2    2    5    8   11   14    6    7    8    9    10
-ligne3    3    6    9   12   15   11   12   13   14    15
-
rbind(A, B)
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    1    4    7   10   13
-ligne2    2    5    8   11   14
-ligne3    3    6    9   12   15
-          1    2    3    4    5
-          6    7    8    9   10
-         11   12   13   14   15
-
-
-

2.4.4 Fonctions -utiles

-

Dimension d’une matrice

-
dim(A)
-
[1] 3 5
-

Nombre de lignes et de colonnes

-
nrow(A)
-
[1] 3
-
ncol(A)
-
[1] 5
-

Transposée et déterminant d’une matrice

-
t(A)
-
     ligne1 ligne2 ligne3
-[1,]      1      2      3
-[2,]      4      5      6
-[3,]      7      8      9
-[4,]     10     11     12
-[5,]     13     14     15
-
det(A[, 3:5])
-
[1] 0
-

Matrice diagonale et diagonale d’une matrice

-
diag(A)
-
[1] 1 5 9
-
diag(1:5)
-
     [,1] [,2] [,3] [,4] [,5]
-[1,]    1    0    0    0    0
-[2,]    0    2    0    0    0
-[3,]    0    0    3    0    0
-[4,]    0    0    0    4    0
-[5,]    0    0    0    0    5
-

Matrice de booléens

-
A > 5
-
        [,1]  [,2] [,3] [,4] [,5]
-ligne1 FALSE FALSE TRUE TRUE TRUE
-ligne2 FALSE FALSE TRUE TRUE TRUE
-ligne3 FALSE  TRUE TRUE TRUE TRUE
-
A[A < 5] <- 0
-A
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    0    0    7   10   13
-ligne2    0    5    8   11   14
-ligne3    0    6    9   12   15
-

Quelques autres fonctions sur les matrices

-
colSums(A)
-
[1]  0 11 24 33 42
-
apply(A, 2, sum)
-
[1]  0 11 24 33 42
-
rowSums(A)
-
ligne1 ligne2 ligne3 
-    30     38     42 
-
apply(A, 1, sum)
-
ligne1 ligne2 ligne3 
-    30     38     42 
-
rowMeans(A)
-
ligne1 ligne2 ligne3 
-   6.0    7.6    8.4 
-
apply(A, 1, mean)
-
ligne1 ligne2 ligne3 
-   6.0    7.6    8.4 
-
apply(A, 1, max)
-
ligne1 ligne2 ligne3 
-    13     14     15 
-

Remarque : on reverra dans la section Programmation la fonction apply() qui -permet en particulier d’éviter les boucles for.
-

-
-
-

2.4.5 Opérations

-

Attention à la multiplication matricielle %*% et la -multiplication terme à terme *!

-

Opérations terme à terme de 2 matrices

-
A + B
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    1    2   10   14   18
-ligne2    6   12   16   20   24
-ligne3   11   18   22   26   30
-
A * B
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    0    0   21   40   65
-ligne2    0   35   64   99  140
-ligne3    0   72  117  168  225
-

Multiplication de matrices

-
t(B) %*% A
-
     [,1] [,2] [,3] [,4] [,5]
-[1,]    0   96  154  208  262
-[2,]    0  107  178  241  304
-[3,]    0  118  202  274  346
-[4,]    0  129  226  307  388
-[5,]    0  140  250  340  430
-

Multiplication par un scalaire

-
5 * A
-
       [,1] [,2] [,3] [,4] [,5]
-ligne1    0    0   35   50   65
-ligne2    0   25   40   55   70
-ligne3    0   30   45   60   75
-
-
-

2.4.6 Exercice

-
-
    -
  1. Créer la matrice \(A=\left(\begin{array}{c -c c } 3 & 3 & 3\\ 4 & 4 & 4\\ 5 & 5 & -5\end{array}\right).\)
  2. -
  3. Ajouter 2 à tous les éléments de \(A\).
  4. -
  5. Créer la matrice \(B\) en ajoutant -la ligne \((1,2,3)\) à \(A\), puis la colonne \((1,1,1,1)'\). Déterminer la dimension -de \(B\).
  6. -
  7. Extraire de \(B\) la sous-matrice -\(C\) composée des deux premières -colonnes et des deux dernières lignes. Calculer la transposée et le -déterminant de \(C\).
  8. -
-
-
# A COMPLETER POUR REPONDRE A L'EXERCICE
-
-
-
-

2.5 Listes -(list)

-

Une liste est une collection ordonnée d’objets qui peuvent être de -nature différente. Les listes sont en particulier utilisées par -certaines fonctions (cf section Programmation) -pour renvoyer des résultats complexes sous forme d’un seul objet. On -utilise la fonction list(nom1=el1,nom2=el2,...) -(l’utilisation des noms étant facultative) pour générer une liste. On -peut accéder à chaque élément de la liste à l’aide de son index entre -double crochets [[...]], ou par son nom précédé du signe -$.

-
-

2.5.1 -list(...)

-
x = list("toto", 1:8)
-x
-
[[1]]
-[1] "toto"
-
-[[2]]
-[1] 1 2 3 4 5 6 7 8
-

Création d’une liste avec des noms aux éléments

-
y = list(matrice = matrix(1:15, ncol = 5), vecteur = seq(1, 20, by = 5), texte = "toto",
-    scalaire = 8)
-y
-
$matrice
-     [,1] [,2] [,3] [,4] [,5]
-[1,]    1    4    7   10   13
-[2,]    2    5    8   11   14
-[3,]    3    6    9   12   15
-
-$vecteur
-[1]  1  6 11 16
-
-$texte
-[1] "toto"
-
-$scalaire
-[1] 8
-
-
-

2.5.2 Extraction

-

Extraction d’un élément par son numéro

-
x[[1]]
-
[1] "toto"
-

Attention, cette commande n’est pas possible:

-
x[[1]] + 1
-

par contre celle-ci est possible

-
x[[2]] + 10
-
[1] 11 12 13 14 15 16 17 18
-
y[[1]]
-
     [,1] [,2] [,3] [,4] [,5]
-[1,]    1    4    7   10   13
-[2,]    2    5    8   11   14
-[3,]    3    6    9   12   15
-
y$matrice
-
     [,1] [,2] [,3] [,4] [,5]
-[1,]    1    4    7   10   13
-[2,]    2    5    8   11   14
-[3,]    3    6    9   12   15
-
y$vec
-
[1]  1  6 11 16
-
y[c("texte", "scalaire")]
-
$texte
-[1] "toto"
-
-$scalaire
-[1] 8
-
-
-

2.5.3 Fonctions -utiles

-
names(y)
-
[1] "matrice"  "vecteur"  "texte"    "scalaire"
-
length(y)
-
[1] 4
-
length(y$vecteur)
-
[1] 4
-
cos(y$scal) + y[[2]][1]
-
[1] 0.8545
-
summary(y)
-
         Length Class  Mode     
-matrice  15     -none- numeric  
-vecteur   4     -none- numeric  
-texte     1     -none- character
-scalaire  1     -none- numeric  
-
-
-

2.5.4 Exercice

-
-
    -
  1. Créer une liste contenant le nom de trois matières, les notes de 5 -élèves pour chacune de ces matières, l’âge des 5 élèves et la filière -(PO) d’appartenance de ces 5 élèves.
  2. -
  3. Récupérer les notes du 4ème élève
  4. -
  5. Créer une matrice contenant les notes et l’âge des 5 élèves.
  6. -
-
-
# A COMPLETER POUR REPONDRE A L'EXERCICE
-
-
-
-

2.6 Data -frames

-

Sous R, un data.frame est analogue à une matrice mais le contenu des -colonnes peut être ici hétérogène. Un tableau de données est un ensemble -de vecteurs rangés colonne par colonne, chaque colonne correspondant à -une variable, chaque ligne à un individu. En particulier, lors d’études -statistiques, les données à étudier sont souvent représentées par un -data.frame sous R. Pour créer un tableau de données, on peut regrouper -des variables de même longueur à l’aide de la commande -data.frame(nom1=var1,nom2=var2,...). On peut par exemple -transformer une matrice en un tableau de données en utilisant la -commande as.data.frame(mat).

-

On donne ici quelques exemples à tester sous R pour vous familiariser -avec les data.frames. En particulier, vous pouvez découvrir des -fonctions utiles dont summary() et head().

-
-

2.6.1 -data.frame()

-
# Création du data.frame H
-taille = runif(12, 150, 180)
-masse = runif(12, 50, 90)
-sexe = rep(c("M", "F", "F", "M"), 3)
-H = data.frame(taille, masse, sexe)
-H
-
     taille    masse sexe
-1  159.1421 66.88895    M
-2  174.3444 69.15921    F
-3  171.4166 67.13989    F
-4  176.8689 63.04042    M
-5  171.3922 81.89926    M
-6  165.7481 87.59690    F
-7  152.4223 76.71279    F
-8  168.1355 57.94457    M
-9  153.0398 71.91566    M
-10 178.3689 65.47261    F
-11 153.0043 68.86331    F
-12 174.3904 53.54047    M
-
class(H)
-
[1] "data.frame"
-
-
-

2.6.2 -summary()/head()

-

La fonction summary() permet de résumer le contenu des -différentes colonnes d’un data.frame.

-
summary(H)
-
     taille          masse           sexe          
- Min.   :152.4   Min.   :53.54   Length:12         
- 1st Qu.:157.6   1st Qu.:64.86   Class :character  
- Median :169.8   Median :68.00   Mode  :character  
- Mean   :166.5   Mean   :69.18                     
- 3rd Qu.:174.4   3rd Qu.:73.11                     
- Max.   :178.4   Max.   :87.60                     
-

La fonction head() permet de visualiser les premières -lignes d’un data.frame

-
head(H)
-
    taille    masse sexe
-1 159.1421 66.88895    M
-2 174.3444 69.15921    F
-3 171.4166 67.13989    F
-4 176.8689 63.04042    M
-5 171.3922 81.89926    M
-6 165.7481 87.59690    F
-
-
-

2.6.3 data.frame / -list/matrix

-

Au travers de ces quelques commandes, vous pouvez voir les analogies -entre data.frame, list et matrix mais restez prudent sur la nature de -l’objet que vous manipulez!

-
H[1, ]
-
    taille    masse sexe
-1 159.1421 66.88895    M
-
H$taille
-
 [1] 159.1421 174.3444 171.4166 176.8689 171.3922 165.7481 152.4223 168.1355
- [9] 153.0398 178.3689 153.0043 174.3904
-
H$sexe
-
 [1] "M" "F" "F" "M" "M" "F" "F" "M" "M" "F" "F" "M"
-
is.data.frame(H)
-
[1] TRUE
-
is.matrix(H)
-
[1] FALSE
-
MH = as.matrix(H)
-MH
-
      taille     masse      sexe
- [1,] "159.1421" "66.88895" "M" 
- [2,] "174.3444" "69.15921" "F" 
- [3,] "171.4166" "67.13989" "F" 
- [4,] "176.8689" "63.04042" "M" 
- [5,] "171.3922" "81.89926" "M" 
- [6,] "165.7481" "87.59690" "F" 
- [7,] "152.4223" "76.71279" "F" 
- [8,] "168.1355" "57.94457" "M" 
- [9,] "153.0398" "71.91566" "M" 
-[10,] "178.3689" "65.47261" "F" 
-[11,] "153.0043" "68.86331" "F" 
-[12,] "174.3904" "53.54047" "M" 
-
summary(MH)
-
    taille             masse               sexe          
- Length:12          Length:12          Length:12         
- Class :character   Class :character   Class :character  
- Mode  :character   Mode  :character   Mode  :character  
-
as.list(H)
-
$taille
- [1] 159.1421 174.3444 171.4166 176.8689 171.3922 165.7481 152.4223 168.1355
- [9] 153.0398 178.3689 153.0043 174.3904
-
-$masse
- [1] 66.88895 69.15921 67.13989 63.04042 81.89926 87.59690 76.71279 57.94457
- [9] 71.91566 65.47261 68.86331 53.54047
-
-$sexe
- [1] "M" "F" "F" "M" "M" "F" "F" "M" "M" "F" "F" "M"
-
-
-

2.6.4 Exercice

-
-

On reprend le data.frame \(H\).

-
    -
  1. Extraire la masse des individus dont la taille est supérieure à -160.
  2. -
  3. Extraire la masse et le sexe de ces mêmes individus.
  4. -
  5. Extraire la taille des individus de sexe masculin dont la masse est -inférieure à 80 (c’est possible en une seule ligne avec -&).
  6. -
-
-
# A COMPLETER POUR REPONDRE A L'EXERCICE
-
-
-
-
-

3 Les graphiques avec -R

-

R contient de base des fonctions dédiées aux graphiques. Les -fonctions graphiques principales comme plot() ouvrent une -nouvelle fenêtre à l’execution. Les fonctions graphiques secondaires -permettent d’ajouter des éléments à un graphique. Une présentation -succinte des graphiques de base avec R est disponible ici (tutoriel “Premiers Graphiques”).

-

Maintenant il est plus usuel d’utiliser la librairie -ggplot2 pour faire des graphiques sous R. On découvrira les -graphiques avec ggplot dans le TP2.

-
-
-

4 Programmation avec -R

-

Cette partie est consacrée à la création des fonctions, les -instructions de contrôle, la syntaxe des itérations et la fonction -apply() (et ses dérivées).

-
-

4.1 Créer une -fonction

-

Il est possible sous R de construire ses propres fonctions. De -manière générale, la définition d’une nouvelle fonction passe par -l’expression suivante :

-
nomfonction=function(arg1[=exp1],arg2[=exp2],...){
-    bloc d instructions
-    sortie = ...
-    return(sortie)
-}
-

Les accolades signalent le début et la fin du code source de la -fonction, les crochets indiquent le caractère facultatif des valeurs par -défaut des arguments. L’objet sortie contient le ou les -résultats retournés par la fonction, on peut en particulier utiliser une -liste pour retourner plusieurs résultats.

-

Voici quelques exemples :

-
MaFonction = function(x) {
-    x + 2
-}
-MaFonction(3)
-
[1] 5
-
Fonction2 = function(a, b = 7) {
-    a + b
-}
-Fonction2(2, b = 3)
-
[1] 5
-
Fonction2(5)
-
[1] 12
-

Fonction retournant le périmètre et la surface d’un cercle à partir -de son rayon :

-
CalculsCercle = function(r) {
-    p = 2 * pi * r
-    s = pi * r * r
-    resultats = list(perimetre = p, surface = s)
-    return(resultats)
-}
-res = CalculsCercle(3)
-res
-
$perimetre
-[1] 18.84956
-
-$surface
-[1] 28.27433
-
res$surf
-
[1] 28.27433
-
-
-

4.2 Structures de -contrôle et itérations

-
-

4.2.1 Instructions -conditionnelles

-

La syntaxe if(condition){instructions} permet de -calculer les instructions uniquement si la condition est vraie. Le code -if(condition){ A }else { B } calcule les instructions A si -la condition est vraie et les instructions B sinon. On peut également -utiliser ifelse.

-

Dans l’exemple suivant, les deux commandes sont équivalentes :

-
if (x > 0) {
-    y = x * log(x)
-} else {
-    y = 0
-}
-y = ifelse(x > 0, x * log(x), 0)
-
-
-

4.2.2 Itérations

-

On utilise les boucles pour exécuter plusieurs fois une instruction -ou un bloc d’instructions. Les trois types de boucle sont :

-
    -
  • la boucle for : -for(var in seq){ commandes }
  • -
  • la boucle while : -while(cond){ commandes }
  • -
  • la boucle repeat : -repeat { commandes ; if (cond) break }
  • -
-

Pour illustrer les trois types de boucles, on a codé de trois façons -différentes la somme des éléments d’un vecteur x ce qui -correspond à la fonction sum() de R.

-
# Exemple boucle for
-somme1 = function(x) {
-    t = 0
-    for (i in 1:length(x)) {
-        t = t + x[i]
-    }
-    return(t)
-}
-
-x = seq(1:10)
-somme1(x)
-
[1] 55
-
sum(x)
-
[1] 55
-
# Exemple boucle while
-somme2 = function(x) {
-    t = 0
-    i = 1
-    while (i <= length(x)) {
-        t = t + x[i]
-        i = i + 1
-    }
-    return(t)
-}
-somme2(x)
-
[1] 55
-
# Exemple repeat
-somme3 = function(x) {
-    t = 0
-    i = 1
-    repeat {
-        t = t + x[i]
-        i = i + 1
-        if (i > length(x))
-            break
-    }
-    return(t)
-}
-somme3(x)
-
[1] 55
-

- -

-Exercice : -

-
-

-
-
    -
  1. Écrire une fonction ma.var qui calcule la variance -empirique corrigée pour un vecteur \(x = (x_1, -. . . , x_n)\). Quelle est la variance de la variable “Taille” -dans le data.frame \(H\) ? Comparez -avec la fonction prédéfinie var().
  2. -
  3. Écrire une fonction qui calcule les \(n\) premiers termes de la suite de -Fibonacci (\(u_1=0, u_2=1, \forall n>2, -u_n=u_{n-1}+u_{n-2}\))
  4. -
-
-
# A COMPLETER POUR REPONDRE A L'EXERCICE
-
-
-
-

4.3 apply() -et ses variantes

-

Il est recommandé d’éviter les boucles très chronophages. On peut -utiliser pour cela la fonction apply() et ses variantes -sapply(), lapply(), tapply() sur -des vecteurs ou matrices.

-

La fonction apply() permet d’appliquer la même fonction -FUN sur toutes les lignes (MARGIN=1) ou les colonnes -(MARGIN=2) d’une matrice MAT : -apply(MAT , MARGIN, FUN).

-

Les fonctions lapply() et sapply() -calculent la même fonction sur tous les éléments d’un vecteur ou d’une -liste. La commande lapply(X,FUN, ARG.COMMUN) permet -d’appliquer la fonction FUN à tous les éléments du vecteur ou -de la liste X. Les valeurs de X sont affectées au -premier argument de la fonction FUN. Si la fonction -FUN a plusieurs paramètres d’entrée, ils sont spécifiés dans -ARG.COMMUN. Cette fonction retourne le résultat sous la forme -de listes. sapply() est une fonction similaire à -lapply() mais le résultat est retourné sous forme de -vecteurs, si possible.

-

La fonction tapply() applique une fonction FUN -sur les sous-groupes d’un vecteur X définis par une variable de -type factor GRP : tapply(X,GRP,FUN,...).

-

Voici quelques exemples :

-
data(iris)
-head(iris)
-
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
-1          5.1         3.5          1.4         0.2  setosa
-2          4.9         3.0          1.4         0.2  setosa
-3          4.7         3.2          1.3         0.2  setosa
-4          4.6         3.1          1.5         0.2  setosa
-5          5.0         3.6          1.4         0.2  setosa
-6          5.4         3.9          1.7         0.4  setosa
-
apply(iris[, 1:4], 2, sum)
-
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
-       876.5        458.6        563.7        179.9 
-
apply(iris[, 1:4], 1, sum)
-
  [1] 10.2  9.5  9.4  9.4 10.2 11.4  9.7 10.1  8.9  9.6 10.8 10.0  9.3  8.5 11.2
- [16] 12.0 11.0 10.3 11.5 10.7 10.7 10.7  9.4 10.6 10.3  9.8 10.4 10.4 10.2  9.7
- [31]  9.7 10.7 10.9 11.3  9.7  9.6 10.5 10.0  8.9 10.2 10.1  8.4  9.1 10.7 11.2
- [46]  9.5 10.7  9.4 10.7  9.9 16.3 15.6 16.4 13.1 15.4 14.3 15.9 11.6 15.4 13.2
- [61] 11.5 14.6 13.2 15.1 13.4 15.6 14.6 13.6 14.4 13.1 15.7 14.2 15.2 14.8 14.9
- [76] 15.4 15.8 16.4 14.9 12.8 12.8 12.6 13.6 15.4 14.4 15.5 16.0 14.3 14.0 13.3
- [91] 13.7 15.1 13.6 11.6 13.8 14.1 14.1 14.7 11.7 13.9 18.1 15.5 18.1 16.6 17.5
-[106] 19.3 13.6 18.3 16.8 19.4 16.8 16.3 17.4 15.2 16.1 17.2 16.8 20.4 19.5 14.7
-[121] 18.1 15.3 19.2 15.7 17.8 18.2 15.6 15.8 16.9 17.6 18.2 20.1 17.0 15.7 15.7
-[136] 19.1 17.7 16.8 15.6 17.5 17.8 17.4 15.5 18.2 18.2 17.2 15.7 16.7 17.3 15.8
-
lapply(iris[, 1:4], sum)
-
$Sepal.Length
-[1] 876.5
-
-$Sepal.Width
-[1] 458.6
-
-$Petal.Length
-[1] 563.7
-
-$Petal.Width
-[1] 179.9
-
sapply(iris[, 1:4], sum)
-
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
-       876.5        458.6        563.7        179.9 
-
tapply(iris[, 1], iris[, 5], sum)
-
    setosa versicolor  virginica 
-     250.3      296.8      329.4 
-

- -

-Exercice : -

-
-

-

Soit la fonction suivante :

-
Exo1 = function(M) {
-    res = rep(0, 5)
-    for (i in 1:5) {
-        tmp = 0
-        for (j in 1:4) {
-            tmp = tmp + M[i, j]
-        }
-        res[i] = tmp
-    }
-    return(res)
-}
-
-M = matrix(1:20, nrow = 5, ncol = 4)
-Exo1(M)
-
-

Proposez une fonction équivalente sans aucune boucle.

-
-
# A COMPLETER
-
-
-
-

5 Lois de probabilité -sous R

-

Le logiciel R permet d’effectuer des calculs avec toutes les lois de -probabilité usuelles, et aussi de simuler des échantillons issus de ces -lois. Pour chaque distribution, quatre commandes préfixées par une des -lettres d, p, q, -r et suivi du nom de la distribution -(nomdist) sont disponibles :

-
    -
  • dnomdist : fonction de densité \(f_X(.)\) pour une loi continue ou fonction -de probabilité \(\mathbb P(X=k)\) pour -une loi discrète
  • -
  • pnomdist : fonction de répartition \(F_X(.)=\mathbb P(X\leq .)\)𝐹
  • -
  • qnomdist : quantiles
  • -
  • rnomdist : génère des réalisations aléatoires indépendantes de la -distribution nomdist.
  • -
-

Voici une liste non exhaustive de lois de probabilité disponibles -:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Loinomdist
Gaussiennenorm
Binomialebinom
Poissonpois
Uniforme continueunif
Exponentielleexp
Studentt
Khi-deuxchisq
Fisherf
-

- -

-Exercice : -

-
-

-
-

Simulez un échantillon de \(n=1000\) -variables aléatoires gaussiennes de moyenne \(10\) et de variance \(4\) Calculez la moyenne et la variance de -l’échantillon.

-
-
# A COMPLETER
-
-
-

6 Entrée / Sortie

-
-

6.1 Importation d’un jeu -de données

-

Pour importer un tableau de données contenu dans un fichier en un -data.frame, on utilise la fonction read.table(). Par -exemple, pour un fichier nommé “Tableau.txt”, on utilisera la commande -Tab1 <- read.table("Tableau.txt") qui crée un data.frame -Tab1. La commande read.table() admet des options dont

-
    -
  • header : indique si la première ligne contient des noms -de variables. Par défaut, la valeur de cette option est FALSE.
  • -
  • sep : précise le séparateur de champ dans le fichier -entre guillemets (” ” par défaut).
  • -
  • dec : le caractère utilisé pour les décimales (“.” par -défaut).
  • -
-

Les fonctions read.csv() et read.csv2() -sont utilisées pour la lecture de fichiers de données au format -.csv.

-
-
-

6.2 Exportation

-
-

6.2.1 Exportation en un -fichier de données

-

Si maintenant on désire sauvegarder un jeu de données, on utilise la -commande write.table(). Les principales options de cette -fonction sont :

-
    -
  • file : nom du fichier dans lequel écrire (vérifier le -répertoire courant)
  • -
  • append : prend une valeur logique. Si TRUE, R ajoute -les données dans le fichier concerné sans effacer les précédentes. La -valeur par défaut est FALSE.
  • -
  • sep : précise le séparateur à utiliser.
  • -
  • dec : précise le caractère à utiliser pour les -décimales.
  • -
-

- -

-Exercice : -

-
-

-
-

Chargez le jeu de données -ìrisdisponible dans R avec la commandedata(iris) -Sauvegardez le jeu de données dans un fichier intitulé -SauvIris.txt avec des “;” pour séparateurs. Importez les -données du fichier SauvIris.txt

-
-
# A COMPLETER
-
-
-

6.2.2 Sauvegarde d’un / -des objets R

-

R permet d’enregistrer des objets entiers, en conservant à la fois -les données contenues dans les objets et les structures des objets.

-

La fonction save.image() peut être utilisée à tout -moment pour enregistrer une image de session, c’est à dire l’ensemble -des objets dans l’environnement de travail d’une session R. La -sauvegarde d’une image de la session vous est également proposée lors de -la fermeture de R.

-

La fonction save() permet d’enregistrer spécifiquement -un ou des objets dans un fichier de format .RData. Ce fichier peut être -à tout moment rechargé sous R avec la fonction load(). -Voici un exemple :

-
x <- runif(20)
-y <- list(a = 1, b = TRUE, c = "oops")
-save(x, y, file = "xy.RData")
-load("xy.RData")
-

On peut aussi enregistrer un seul objet, sans inclure le nom de -l’objet, à l’aide de la fonction saveRDS(). L’objet, -sauvegardé au format .rds peut être rechargé avec la -fonction readRDS().

-
-
-
- - - -
-
- -
- - - - - - - - - - - - - - - -