Quelques trucs et astuces

Transcription

Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
Quelques trucs et astuces
Pascal Bessonneau / Christophe Pallier
Cogmaster, 2009.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
Plan
1
Commandes utiles
2
Les autres types d’objet
3
Le langage objet de R
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
La fonction merge(1)
Cette fonction est très utile pour obtenir une data.frame unique à
partir par exemple des données provenant de deux expériences.
Sa syntaxe est relativement simple. Elle prend comme deux
premiers arguments la première data.frame comme second
argument la seconde data.frame. Les arguments suivants by.x et
by.y indique quel colonne sera pris comme identifiant commun aux
deux tableaux. En effet on ne peut pas utiliser les noms
d’observations pour la fusion.
La data.frame résultat est reclassé en fonction des valeurs de la
colonne identifiant.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
La fonction merge(2)
Par exemple on peut faire un exemple pour mélanger les données
démographiques du TP 2 :
lifew <- merge(tmpm,tmpf,by.x="country",by.y="country")
Les arguments all, all,x, all.y permettent d’inclure des observations
qui seraient repsectivement pas dans et pas dans y, pas dans x, pas
dans y. Par défaut la valeur est all=FALSE. Seules les valeurs
présentes à la fois dans x et dans y sont la data.frame d’arrivée.
L’argument suffix permet d’ajouter un suffixe spécifique quand des
colonnes ont le même nom dans les 2 data.frames. Par défaut les
suffixes sont .x et .y.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
La fonction unique
La fonction unique() est très pratique et très simple. Elle renvoie
tout simplement les valeurs uniques d’un vecteur.
Par exemple du vecteur c(1,1,3,3,4,5 elle va renvoyer le vecteur
c(1,3,4,5).
Elle est particulièrement précieuse pour les variables character ou
pour compter les modalités d’une variable pseudo continue.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
Les ambigüités du langage R - S3
R est un langage à la base qui n’est pas purement orienté objet.
Par contre rapidement un pseudo modèle objet dont le nom est S3
a été créé. Il ne s’agit pas d’un vrai langage objet mais plutôt de la
possibilité supplémentaire de donner un type particulier à un
ensemble de données.
La plupart des fonctions et paquets utilisent ce système. Quelques
commandes que nous verrons permettent assez simplement
d’extraire les données et de retrouver les fonctions associés aux
objets et inversement. Mais ces fonctions font qu’il existe une
certaine confusion entre type et objet dans les documents traitant
de R.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
Les ambigüités du langage R - S4
Il existe une extension beaucoup plus récente qui est un vrai
langage objet (incluant l’héritage multiple et polymorphisme) dont
le nom est S4.
Son interprétation est plus lente que le code “non S4”. De plus son
implémentation est relativement complexe et n’est pas aussi
intuitive que dans d’autres langages tels que Java ou Python.
S4 ne sera pas aborder au cours de ce cours car il est un peu trop
complexe et demande de solides connaissances en programmation.
Certains paquets utilisent cette technologie comme lme4 par
exemple pour les modèles mixtes.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
L’affichage des données et le S3(1)
L’affichage de beaucoup de fonctions R s’accompagne de texte. Il
suffit pour cela de faire tout simplement cette commande :
t.test(c(rnorm(100),rnorm(100,2))~gl(2,100))
Est affiché le résultat test de Student (comparaison de deux
moyennes). Les valeurs sont automatiquement affichées avec le
texte adéquat. Ceci parce qu’il n’y a pas d’affectation. En effet la
fonction utilise invisible(). Sans affectation R comprends qu’on
veut imprimer à l’écran le résultat et appelle la fonction print().
Les deux commandes sont donc équivalentes :
t.test(c(rnorm(100),rnorm(100,2))~gl(2,100))
print(t.test(c(rnorm(100),rnorm(100,2))~gl(2,100)))
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
L’affichage des données et le S3(2)
Pour stocker l’objet, avec la fonction invisible, il suffit de faire une
affectation.
resultat <- t.test(c(rnorm(100),rnorm(100,2))~gl(2,100))
Dans ce cas l’objet est stocké dans la variable resultats
resultat
print(resultat)
R imprime les résultats sous forme intelligible mais on ne peut
récupérer les valeurs.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
L’affichage des données et le S3(3)
En fait si on tape la commande :
str(resultat)
R nous indique que toutes les valeurs (ou presque) peuvent être
récupérés sous forme plus pratique. Par exemple si on veut extraire
la p.value il suffit de taper :
resultat$p.value
Pourquoi a-t-on alors l’affichage des valeurs et du texte formaté
lorsqu’on demande l’affichage de l’objet ?
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
L’affichage des données et le S3(4)
Cela est lié au fait qu’une simple étiquette est apposé sur l’objet.
Ce principe est celui du système S3.
On peut accéder au type d’objet par la commande class().
class(resultat)
Dans ce cas on voit que l’objet est de type ”htest”. Au moment de
l’affichage, R va rechercher si pour cette étiquette il existe une
fonction print() dédiée.
Si on tape la commande suivante on obtient la liste de toutes les
fonctions print disponible. Les fonctions sont appelées
print.nomdelobjet.
methods("print")
On peut retrouver la fonction print.htest qui nous concerne dans
ce cas.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
L’affichage des données et le S3(5)
Donc quand on récupère des calculs et qu’on constate la présence
d’un affichage on peut suspecter que l’objet renvoyé par R est un
objet de type S3 (ou S4).
Ceci ne se limite pas à la fonction print. Pour les objets de base,
notamment les tests statistiques, de nombreuses fonctions sont
disponibles. Pour connaı̂tre les fonctions existantes pour un type
d’objet donné, il suffit de taper la commande :
methods(class="htest")
Dans l’exemple du test de Student, il n’existe que la fonction print.
Mais pour des tests plus complexes comme pour les ANOVAs que
nous verrons en fin de cours il existe de nombreuses fonctions.
Par exemple pour l’ANOVA :
methods(class="aov")
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces
Commandes utiles
Les autres types d’objet
Le langage objet de R
L’affichage des données et le S3(5)
Lorsqu’on récupère un résultat sous forme il y a donc deux choses
qui peuvent être utiles :
methods(class=class(objet)) : elle permet de connaı̂tre les
fonctions disponibles pour l’objet sur lequel on travaille. On
trouve des fonctions pour l’impression, la représentation
graphique, l’extraction de résultats,...
str(objet) qui permet d’accéder directement aux valeurs si
aucune fonction permettant d’accéder à ces valeurs n’existent.
Le système est similaire pour les objets S4 et les commandes
présentées marche par contre il s’agit d’un vrai système objet dont
la description dépasse le cadre de ce cours.
Pascal Bessonneau / Christophe Pallier
Quelques trucs et astuces