• Aucun résultat trouvé

[PDF] Introduction aux Principes de base pour utiliser R | Formation informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Introduction aux Principes de base pour utiliser R | Formation informatique"

Copied!
20
0
0

Texte intégral

(1)

Jérôme Mathieu

janvier 2007

Débuter avec R

Ce document est disponible sur le site web : http://www.jerome.mathieu.freesurf.fr

(2)

Sommaire

1 Principes de base pour utiliser R ... 3

$$$ Démarrer R pour la première fois $$$... 4

Passer des ordres à R : les fonctions ... 5

Les fonctions disponibles dans R ... 5

Afficher le code source d'une fonction... 6

Sélection de packages intéressants pour l'écologie des communautés... 6

Stocker un objet en mémoire... 7

Obtenir de l'aide ... 8

Charger un package dans R... 8

2 Manipulation des données ... 9

Format des fichiers de données pour R ... 10

Lire un fichier de données... 10

Lister les objets en mémoire... 11

Lister les fichiers dans le répertoire de travail de R... 11

effacer un data frame ou un variable... 11

Accéder au contenu d’un dataframe... 12

Sélectionner des données d'un dataframe selon un critère ... 15

Concaténer plusieurs variables dans un dataframe ... 16

Accéder aux objets contenus dans une liste ... 18

Faire la même opération sur toutes les colonnes ou toutes les lignes ... 19

(3)
(4)

$$$ Démarrer R pour la première fois $$$

Pour lancer R, on peut soit cliquer sur l'icône de raccourci, soit cliquer sur un fichier .Rdata

Répertoire de travail, historique des commandes, enregistrement d'une

session

A chaque fois qu'on lance R, une nouvelle session est créée. Par défaut R travail dans certain répertoire, typiquement C:\Program Files\R\rw2001

Il faut commencer par lui spécifier un dossier dans le quel on veut travailler, où il va stocker les variables, analyses etc que l'on va utiliser:

menu File/ChangeDir… depuis R, sous windows. Éventuellement copier les données dans ce répertoire

Pendant qu'on travaille, R stocke les données produites dans un "espace de travail" ("workspace"), et stocke les ordres qu'on lui a passés dans un historique. Ces 2 éléments sont stockés dans le répertoire de travail actuel, dans des fichiers nommés respectivement ".Rdata" et ".Rhistory". Ils n'apparaissent qu'une fois qu'on a finit la session.

Le fichier ".Rdata"

Lorque l'on clique sur .Rdata, on peut reprendre la session précédente au moment où on avait fermé R. Les dataframes, variables etc sont conservées (cf p.10 pour voir ce que c'est). Par contre il faut respécifier le dataframe attaché si il y en a un (cf. p.13).

Le fichier ".Rhistory"

Il contient l'historique des commandes passées à R. Il s'ouvre avec le note pad, ou autre logiciel de texte de base. On peut l'éditer et mettre des commentaires dedans en rajoutant le signe # devant le texte de commentaire. C'est très utile pour se rappeler ce qu'on a fait.

(5)

Passer des ordres à R : les fonctions

Pour passer des "ordres" (des "commandes") à R, on fait généralement appel à des fonctions. Pour les invoquer, on les appelle par leur nom toujours suivi d'une parenthèse ouverte et fermée. Au sein des parenthèses, on nomme le ou les éventuel(s) objet, souvent des tableaux de données (dataframe, cf. p. 7), sur le(s)quel(s) la fonction doit agir. On peut aussi y mettre d'éventuels paramètres, pour spécifier une option de la fonction. Les objets donnés à la fonction sont appelés arguments de la fonction.

Les arguments sont différents pour chaque fonction, certains arguments sont obligatoires alors que d'autres sont facultatifs (ils ont alors une valeur par défaut que l'on peut connaître en consultant l'aide de la fonction). Dans le reste de ce polycopié, les arguments obligatoires seront spécifiés pour chaque fonction, et uniquement les arguments optionnels les plus souvent utilisés. Pour avoir une explication détaillée sur une fonction , cf p.8.

Le principe général pour appeler une fonction nommée "fonction" peut donc s'écrire

les "…" sont utiles dans le cas où un des argument est 1 fonction, ils représentent les arguments que l'on peut désire passer à cette fonction, ou à une fonction qu'utilise la fonction appelée (plutôt pour initiés).

Pour rappeler les dernières commandes tapées, appuyer sur la flèche du haut plusieurs fois.

Les fonctions disponibles dans R

Pour avoir une idée des fonctions de base disponibles dans R, on peut consulter la référence de R (R reference manual) et le manuel de base de R (An introduction to R), qui sont disponibles à partir du menu Help/ Manuals (in pdf), sous windows. Pour des besoins spécifiques, comme dans notre cas, l'écologie des communautés, il existe des modules optionnels que l'on peut installer (cf p.8). Une difficulté est de savoir dans quel(s) module(s) se trouvent les fonctions dont on a besoin.

On peut trouver la liste des packages disponibles sur le site de R, où ils sont brièvement décrit. Pour obtenir cette page, à l'heure actuelle, allez sur le site de R (R project), suivez les liens suivants: Download/ CRAN puis choisissez un site proche de chez vous en cliquant dessus. Quelque soit le site choisi, le page suivante a la même configuration. A Gauche, dans la rubrique Software, cliquez sur Packages. Dans la nouvelle page, tous les packages disponibles sont affichés en bas de la page

Éventuellement faites une recherche dans la page par mot clef (touche ctrl et f avec firefox Si vous cliquez sur un package, une page s'affiche, montrant le nom de l'auteur, la version du package, etc, et en bas il y a 4 liens, normalement :

Package source: codes sources pour recompiler le package (utile surtout sous linux) Windows binary: ficher d'installation du package pour windows (peut-être pour mac aussi) Index of contents: page web listant et décrivant toutes les fonctions et données du package Reference manual: le manuel d'aide sur le package, en pdf

(6)

Afficher le code source d'une fonction

Lorsque l'on veut comprendre en détail le fonctionnement d'une fonction, ou que l'on ne comprend pas une erreur, il peut être intéressant d'étudier le code source de la fonction. Pour cela on tape le nom de la fonction sans mettre de parenthèse ni d'arguments.

Sélection de packages intéressants pour l'écologie des

communautés

Les indispensables ade4 adehabitat vegan coan cocorresp grasper tree rpart labdsv les utiles classification klar mvpart cluster pvclust resampling boot multest graphs vioplot lattice maps maptools généraux pgirmess gam sem nlme MASS zicounts données spatiales spatstat gstat splancs

(J'ai probablement oublié ou ne connais pas des packages utiles).

un bon moyen de trouver quel package peut faire une tâche spécifique, est de chercher sur le forum de R.

(7)

Stocker un objet en mémoire

Pour stocker un objet dans la mémoire, il faut commencer par le créer (souvent à l'aide d'une fonction), puis indiquer à R de le stocker dans un objet, dont on nomme le nom. Si l'objet est le résultat d'une fonction, on dit à R de stocker le résultat de la fonction dans un objet auquel on attribue un nom. Attention, certains noms sont réservés ou à éviter, en particulier les noms de fonction. Il y a 3 syntaxes possibles : ! " # $ % & % "% $ ' ' ' $ $ $ ! $ $

Remarque: l'affectation se fait 1 seule fois, au moment de l'appel. Par exemple si y change par la suite, a ne changera pas, dans notre exemple.

il y a plusieurs types d'objets dans R, de complexité croissante :

- les "vecteurs" : une suite de caractères ou chiffres. Les vecteurs sont de dimension nulle, mais de longeur non nulle

- les "array" ou "matrix": matrice simple de chiffres

- les "dataframe" : matrices de donnée pouvant contenir des éléments de nature différentes: chiffres ou caractères. Souvent les colonnes sont différentes variables, et les lignes les différentes observations. Un dataframe a souvent des noms de colonnes, et éventuellement des noms de lignes taper "names(nom du dataframe)", ou "row.names(nom du dataframe)", sans les ", pour les obtenir.

- les "list" : ce sont des collections d'objets, des sortes de containers, pouvant contenir plusieurs objets, éventuellement de nature différentes (vecteurs, dataframe, ou même des list). Les list sont souvent données en sorties de fonctions statistiques, car elles permettent de regrouper des informations de taille et nature différentes. Attention, la navigation au sein des list se fait différement qu'avec les vecteurs, matrice et dataframe

(8)

Obtenir de l'aide

sur une fonction

Il y a justement une fonction dédiée à afficher de l'aide sur les fonctions: c'est "help", ou "?", en version abrégée

(

)

sur un sujet

Lorsque l'on ne connaît pas le nom de la fonction recherchée, mais que l'on a une idée des termes qui lui sont associés, on peut utiliser apropos et help.search :

% %

( '% ( *% *

sur un package

cf. Les fonctions disponibles dans R p.5

sur n'importe quoi au sujet de R

on peut consulter la mailing list du site (difficile à trouver) dernière adresse : http://finzi.psych.upenn.edu/search.html

Charger un package dans R

1° R propose de nombreux package optionnels, pour répondre à des besoins spécifiques. Pour les utiliser, il faut d'abord les installer (menu Packages/install package from CRAN si vous êtes connectés, menu Packages/install package from local zip files, si vous avez les fichiers en zip). Certains packages ne sont pas proposés depuis install from CRAN, et il faut alors allez les chercher sur le site de R, les enregistrer, puis utiliser menu Packages/install package from local zip files.

2° Une fois installé, il faut charger les package dont on a besoin, à chaque utilisation de R, en tapant :

(9)
(10)

Format des fichiers de données pour R

Le plus simple est d'avoir les données sous excel, ou un autre tableur, et de les exporter en mode texte avec tabulation en séparateur dans un nouveau fichier. C'est celui-ci qu'il faut indiquer à R lors de la phase de lecture des données (chapitre suivant).

Avant d'enregistrer en mode texte, quelques précautions s'imposent :

- Il faut mettre les variables (souvent les espèces) en colonne : 1 variable par colonne, et les observations (les échantillons, c.a.d. les "objets"), en ligne : chaque ligne correspond à une observation.

- il ne doit pas y avoir de ligne ou de colonne vide en haut ou à gauche des données

- il doit n'y avoir que le tableau de données. Enlever tout graph, commentaire ou texte dans d'autres cases.

- enlever les espaces, les accents dans les noms et transformer toutes les virgules en point (touches ctrl et a puis ctrl et h, cliquer sur remplacer tout, dans la plupart des applications ça marche).

- enlever toutes les mises en formes : caractères gras, bordures de cellule, uniformiser les polices.

Lire un fichier de données

Le principe général est de demander à R de lire le fichier texte et de stocker les données extraites dans un "dataframe". On nomme ce dernier comme on veut, le plus simple étant le mieux. Le nom ne doit pas comporter de signe particulier comme les accents, espaces, virgules.

Dans ce qui suit on considère que les données sont dans un fichier nommé 'donnees.txt', et que l'on va les stocker dans un data frame nommé 'data'.

Voici les commandes à taper selon le cas :

Si on a un tableau de données sans nom pour les variables, on tape

' , %'

-si le fichier est dans un autre dos-sier on peut le spécifier en précédant le nom du fichier par l'adresse, avec les \ remplacés par des /. Ex avec un fichier dans le répertoire F:\temp,

' ,.!/ / %'

-Personnellement je laisse mes données dans un seul répertoire, et les lit depuis R avec cette méthode. Ceci permet d'éviter la gestion de différentes versions des mêmes tableaux de données (plus pratique si il faut corriger une erreur dans 1 tableau).

(11)

On peut mettre des noms aux variables (les 'labels'), en les situant sur la première ligne du fichier, avec un seul nom par variable, et un nom pour chaque variable.

' , %' - ( 012

On peut aussi créer une colonne qui serve de label aux échantillons, de 2 manières:

Cas 1 : Si c'est la première colonne du tableau qui sert de label, on ne lui met pas de labels sur la première ligne, et on décale tous les labels d'un cran vers la gauche. Ainsi les labels sont décalés d'une colonne. Lors de la lecture R détecte automatiquement ce format et on n'a pas besoin de lui donner d'indication particulière.

' , %'

-Cas 2 : Si c'est la colonne n qui sert de label, on la spécifiera lors de la lecture du tableau par R.

' , %' - 3' % %4 5 ( 012

Remarque: Après avoir lu et stocké un tableau de données,

IL FAUT TOUJOURS VERIFIER QUE LES DONNEES ONT ETE BIEN LUES,

Lister les objets en mémoire

Pour savoir quels objets sont en mémoire dans R on fait

%

Lister les fichiers dans le répertoire de travail de R

Pour lister les fichier du répertoire de travail, on tape

effacer un data frame ou un variable

pour effacer un objet de la mémoire de R, on fait

(12)

Accéder au contenu d’un dataframe

De manière générale, pour accéder aux éléments d'une matrice ou d'un dataframe, on le nomme, puis on indique, entre crochets, séparés par une virgule, le numéro des lignes, puis des colonnes, des données qui nous intéresse:

Pour le cas d'une data frame nommé data :

4 6 6 5

Lorsque l'on veut tous les éléments, on met rien à la place du n° de la ligne ou de la colonne, par ex :

4 5 7 8 % 7 8 7

4 5 7 % % " %

4 5 7 % % % 8

4 5 7 % % % #

Un intérêt des dataframe est qu'au lieu d'appeler les variable en indiquant leur position dans le dataframe (ex: la 27ème variable), ce qui est nécessite de se rappeler où est la variable qu'on veut, on peut appeler les variables directement par leur nom, sans savoir leur position dans le dataframe.

Accéder aux variables d'un dataframe

Imaginons un dataframe nommé "data", avec 4 variables nommées V1,V2,V3,V4 Pour accéder à la variable de V1, il faut taper :

9:

Pour accéder à la 3ème variable, il faut taper

4 ;5

Pour accéder de la 2ème à la 5ème variable, taper :

4 !<5

le signe ":" signe créer une série de valeurs en rajoutant 1 à chaque fois, par ex

(13)

pour accéder séquentiellement aux variables 1à 4

! = > 4 5

?

Exemple: stocker dans un vecteur “outpout” les moyennes des variables 1 à 4

! = >

4 5 ?

Pour aller plus vite, on peut aussi spécifier à R que l'on travaille sur un dataframe particulier par défaut, ce qui évite de le nommer à chaque commande. On peut alors appeler directement les variables par leur nom, sans indiquer à chaque commande le nom du dataframe.

% " # % "

(

7 7

:

9:

Accéder aux noms des variables

Si on a nommé les différentes variables dans le fichier d'origine, on peut demander la liste des noms des variables

%

pour accéder au nom de la nième variable

% 4 5

Accéder aux niveaux d'un facteur ou d'une variable

Quand on a un facteur catégorique (en classes), celui présente différentes modalités que l'on peut demander par

7 7 :

7 % 9:

pour avoir le nombre de niveaux d'un facteur :

7 7 :

(14)

Accéder aux observations (aux lignes)

Pour accéder à la ligne 3 de toutes les variables

4; 5

Pour accéder aux lignes 10 à 20 des variables 2 à 5 :

(15)

Sélectionner des données d'un dataframe selon un critère

Pour cela il faut chercher les valeurs qui vérifient un critère désiré. Ceci se fait à l'aide d'un test, c'est-à-dire une opération logique. Les tests possibles sont

==, != égal et différent de, respectivement >= , <=, >, < inférieur ou égal, supérieur ou égal, etc… On peut demander des combinaisons de tests

| union entre 2 tests ou 2 variables : "ou" inclusif & intersection : "et"

La formule générale pour sélectionner une partie des lignes d'un dataframe est :

4 % 5

On ne garde que les lignes pour lesquelles le test est vrai, et on prend toutes les colonnes (aucun n° de colonne étant spécifié, on prend toutes les colonnes , cf. chap d'avant)

Ex: sélectionner tous les relevés du dataframe "data" où la variable "v1" est égale à 0. On tape:

4 9: @ 5

Notez qu'il y a bien 2 signes =, parceque l'on fait un test. Si on avais mis un seul =, cela aurai signifié "attribue la valeur 0 à la variable V1".

Remplacer des données dans un dataframe selon un critère

Il suffit de sélectionner les données qui vérifient le critère voulu (cf section d'avant), et de leur attribuer une nouvelle valeur

4 % 5 7 7

!

% % 7 % ; %# * *

4 9 * * ;5

(16)

Concaténer plusieurs variables dans un dataframe

Concaténation horizontale

Il faut utiliser les fonction append et cbind (abréviation de colon biding) : Concaténer 2 vecteurs, et les transformer en variables d'un dataframe Soit x et y, 2 vecteurs à transformer en variables dans le dataframe « data » Posons x = 1à 10 Y= 2 à 11 Taper $ ! @ $ ! %' ' %' $ %' ' Vous obtenez : x y 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11

data<-as.data.frame(vecteur) intègre le vecteur 'vecteur' dans le dataframe 'data', en tant que variable nommée 'vecteur'

Concaténer des variables d'un dataframe dans un nouveau dataframe

Imaginons que nous voulions sélectionner les variables V1, V5 et V7 du dataframe data, et les regrouper dans un nouveau dataframe nommé newdata

9: 9A :< 9:B 3

% (" 7 ' ; !

: :< :B 3

(17)

Concaténer des variables d'un dataframe dans un nouveau dataframe

Parfois on veut concaténer horizontalement des dataframes. Un exemple typique est lorsque l'on a trop de variables pour les stocker sur une seule feuille excel, et que l'on a besoin

néanmoins de rabouter les tableaux. Dans ce cas on charge séparément les données de chaque feuille (avec les observations dans le même ordre) après les avoir exporté en .txt (cf.), puis on demande de concaténer horizontalement. Remarque : il faut concaténer les tableaux 2 par 2 plutôt que tous ensemble d'un seul coup. Exemple avec un dataframe temporaire "tmp", et 3 dataframe "data1", "data2" et "data3".

%' '

C %' ' ;

Concaténation verticale

Si on veut obtenir une seule variable, qui contienne tous les éléments de 2 variables

$

Résultat : un vecteur « data » qui contient toutes les observations de x et y à la suite : [1] 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11

pour le convertir en data.frame, cf. paragraphe d’avant on peut aussi utliser rbind (abréviation de rowbinding)

(18)

Accéder aux objets contenus dans une liste

Le principe est le même que pour un dataframe, mais les dimensions sont notées en double crochet :

% * % * % 44 55

;8 % * % *

(19)

Faire la même opération sur toutes les colonnes ou toutes

les lignes

La fonction apply() permet de faire la même opération sur toutes les lignes et/ou toutes les colonnes d'un objet. On appelle ça parfois faire des opération "marginales" (francisé de l'anglais margin = bordure). C'est une fonction extrêmement importante qui revient tout le temps!

Elle comprend au moins 3 arguments

$

data est l'objet sur le quel on va faire la même opération sur toutes les lignes/colonnes

margin, indique à quoi il faut appliquer la fonction : 1 à toutes les lignes

2 à toutes les colonnes

c(1,2) à toutes les lignes et colonnes

fonction la fonction : moyenne, variance, fonction personnelle… … argument optionnel utilisé par la fonction

(si elle a besoin d'arguments en plus que data) exemple :

$ % % % %

$

$ % % %

(20)

Faire une opération sur des sous blocs de données

spécifiés par un facteur

On a très souvent besoin de répéter la même analyse pour des sous blocs de données. Par exemple faire la moyenne d'une variable pour chaque traitement, compter le nombre d'espèces par milieu... Ceci se fait grâce aux fonction tapply si les données sont un vecteur, by si les données sont un dataframe ou une matrice. Ces fonctions sont fondamentales pour une utilisation efficace de R.

Elle comprend au moins 3 arguments

$ 7 '''

$ '''

data est l'objet sur le quel on va faire la même opération sur toutes les lignes/colonnes

facteur liste de facteurs qui indique les traitements

fonction la fonction : moyenne, variance, fonction personnelle… … argument optionnel utilisé par la fonction

(si elle a besoin d'arguments en plus que data)

Exemple : faire la moyenne pour chaque traitement indique par la variable "trt"

Références

Documents relatifs

• Traiter les mêmes questions que dans lʼexercice (I), mais pour un autre mouvement : lʼhomme par- court sur la plate-forme un cercle de rayon r 0 , centré sur lʼaxe de rotation,

• Un petit anneau, de masse m, peut glisser sans frottement sur une circonférence verticale de rayon R, tournant à la vitesse angulaire constante ω autour de son diamètre

La r` egle de l’Hospital permet de r´ esoudre un tr` es grand nombre de formes ind´ etermin´ ees (toutes celles de la forme 0 0 , ±∞ ±∞ et toutes celles qui s’y ram`

Déterminer une base et la dimension de

When the calculated p-value falls below a significance threshold (typically 0.05) then the null hypothesis is rejected and the alternative hypothesis is accepted

Ce document est en grande partie traduit de Tom Short, « R Reference Card », 12 juillet 2005 (domaine public), disponible et mis à jour sur www.Rpad.org.. La « R Reference Card

It may not be surprising that the generic print function does not do the actual printing, but rather looks at the class of an object and then calls the specific print method of

Les options xlab et ylab permettent de modifier le nom des axes tandis que l’option main permet d’ajouter un titre (toutes les options disponibles sont d´ etaill´ ees dans la