introduction au logiciel r - 5. chaines de caractères
TRANSCRIPT
Chaînes de caractèresFonctions
Concepts avancésLibrairies
INTRODUCTION AU LOGICIEL R5. Chaines de caractères. Fonctions. Librairies.
Anne Dubois, Julie Bertrand, Emmanuelle Comets
INSERM UMR738
E. Comets (UMR738) Introduction à R - Novembre 2009 1 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Remise en jambe
La librairie ISwR contient le jeu de données bp.obese. Ces donnéesont été obtenues chez un échantillon de sujets d’origine mexicainedans une ville de Californie. Elle contient trois variables, sexe(0=hommes, 1=femmmes), obese (ratio d’obésité), bp (pressionsanguine systolique en mm de mercure).
1 Représentez les données dans un graphe, en utilisant dessymboles différents pour hommes et femmes
2 Expliquez la pression sanguineen fonction du ratio d’obésitéen fonction du ratio d’obésité et du sexe
3 Tracez sur un même graphe avec des couleurs différentes lescourbes de régression correspondant aux deux modèles
pour le deuxième, tracez les courbes selon le sexen’oubliez pas la légende
E. Comets (UMR738) Introduction à R - Novembre 2009 2 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Plan
Chaînes de caractèresFonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
FonctionsSyntaxeArguments et résultatAutres éléments des fonctions
Concepts avancés
LibrairiesInstallation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
E. Comets (UMR738) Introduction à R - Novembre 2009 3 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Rappels sur les chaînes de caractères
La fonction cat réalise la conversion et l’affichage de chaînes decaractères.
> cat("John","est l’ami de","Paul","\n")John est l’ami de Paul
Noter l’espace laissé entre les chaînes.
La fonction paste permet l’écriture dans une chaîne de caractères :
> numdat<-1> nomfich<-paste("dataset",numdat,".dat",sep="")> nomfich[1] "dataset1.dat"
Très utile pour automatiser le traitement de fichiers :
for (nam in c("janvier","fevrier","mai")) {dat<-read.table(paste("salaire",nam,".dat",sep=""))....}
ou pour construire des formules automatiquement.E. Comets (UMR738) Introduction à R - Novembre 2009 4 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Manipulation de chaînes de caractères
Chaînes particulières : letters, LETTERS, month.name, month.abb
> LETTERS[1:7][1] "A" "B" "C" "D" "E" "F" "G"
Comparaison de chaînes :
> prenom[1]<prenom[2][1] TRUE
Nombre de caractères d’une chaîne : nchar
> length("Mai")[1] 1> nchar("Mai")[1] 3
E. Comets (UMR738) Introduction à R - Novembre 2009 5 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Fonctions travaillant sur des chaînes de caractères
abbreviate : automatise les abréviations :
> chaine<-"Ceci est une chaine"> abbreviate(chaine)Ceci est une chaine
"Ceuc"
make.unique() : sur un vecteur de chaînes de caractères, ajoutedes suffixes pour former des éléments tous différents
> month.name[1] "January" "February" "March" "April" "May" "June"[7] "July" "August" "September" "October" "November" "Dec ember"
> vec<-c("a","b","bc","b","a")> make.unique(vec)[1] "a" "b" "bc" "b.1" "a.1"
Voir aussi make.names() qui transforme n’importe quoi en nom.
E. Comets (UMR738) Introduction à R - Novembre 2009 6 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Fonctions de recherche
charmatch(), pmatch(x, list) : pour chaque élément de x, renvoitsa position dans list si elle existe et est unique
> nchar(month.name)[1] 7 8 5 5 3 4 4 6 9 7 8 8charmatch("July",month.name)
[1] 7> charmatch("Juin",month.name)[1] NA
Note : on a aussi match() pour la similitude complète (mais pas larecherche partielle).
substr(x,debut,fin), substring() : affiche la chaîne x depuis lecaractère debut jusqu’au caractère fin.
> substr(chaine,2,10)[1] "eci est u"
E. Comets (UMR738) Introduction à R - Novembre 2009 7 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Recherche et remplacement
R utilise plusieurs fonctions directement importées d’Unix et qui sontdes outils de manipulation de chaînes extrêmement puissants. Leurutilisation déborde largement le cadre de R.
grep(expr, chaine) : renvoie 1 (ou la position dans le vecteur sichaine est un vecteur) si expr est dans chaine, rien sinon
gsub, sub(expr1,expr2, chaine) : substitue expr2 à expr1 danschaine (première occurrence pour sub, toutes pour gsub)
> grep("e",chaine)[1] 1> grep("x",chaine)numeric(0)> gsub("e","a",chaine)[1] "Caci ast una chaina"> sub("e","a",chaine)[1] "Caci est une chaine"
E. Comets (UMR738) Introduction à R - Novembre 2009 8 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Recherche et remplacement
grep(), gsub() et sub reconnaissent des expressions régulières quisont des genres de motifs. Les expressions régulières sontconstituées de caractères normaux (interprétés tels quels) et demétacaractères :ˆ début de ligne$ fin de ligne· n’importe quel caractère[ABC] A ou B ou C[ABC] n’importe quoi SAUF A ou B ou C[A-Z] n’importe quelle lettre majuscule\ le métacaractère suivant n’est pas interprété
(e.g. \· sera interprété comme "cherche un point")Un petit cours contenant une explication de grep et des expressions régulières, en plus d’une
introduction à Unix (Patrick Fuchs) : http://condor.ebgm.jussieu.fr/∼fuchs/M2BI/Unix_avance.pdf
E. Comets (UMR738) Introduction à R - Novembre 2009 9 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Exercice
Expliquer les sorties suivantes :
> grep("er$",month.name)[1] 9 10 11 12> grep("^[A-J]",month.name)[1] 1 2 4 6 7 8 12> grep("^[^J]",month.name)[1] 2 3 4 5 8 9 10 11 12
Dans la chaine chaine :remplacer tous les e par des iremplacer tous les a, b, c, d et e par des x
E. Comets (UMR738) Introduction à R - Novembre 2009 10 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Découpage : strsplit() (1)
strsplit(chaine, expr) : renvoie une liste avec les éléments de chainedécoupés en fonction de expr
> strsplit(chaine," ")[[1]][1] "Ceci" "est" "une" "chaine"
Note : si expr vaut "", découpage par caractère.Pour récupérer un vecteur et non une liste :
> unlist(strsplit(chaine," "))[1] "Ceci" "est" "une" "chaine"
Pour recoller avec un "-" entre chaque mot :
> paste(unlist(strsplit(chaine," ")),collapse="-")[1] "Ceci-est-une-chaine"
exemple d’utilisation : la transformation d’une chaine avec desespaces en un nom acceptable pour R
E. Comets (UMR738) Introduction à R - Novembre 2009 11 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Découpage : strsplit() (2)
Par défaut, expr est une expression régulière, et certains signes ontune interprétation particulière. Pour lui demander de considérer cessignes comme tel, utiliser l’option fixed=T :
> nom<-"ceci.est.un.nom"> strsplit(nom,".")[[1]]
[1] "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""> strsplit(nom,".",fixed=T)[[1]][1] "ceci" "est" "un" "nom"
E. Comets (UMR738) Introduction à R - Novembre 2009 12 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Exercice - manipulation de chaînes de caractères
Créer un vecteur contenant comme éléments des chaînes decaractère formées des prénoms et nom de tous les élèves ducours, séparés par un espace
exemple : "Anne Dubois", "Julie Bertrand"
Afficher le prénom du premier élève; afficher son prénom
Créer deux autres vecteurs, l’un contenant tous les noms etl’autre tous les prénoms
Créer un autre vecteur où le format soit "Anne-Dubois"
Afficher tous les prénoms contenant la lettre "i" (majuscule ouminuscule)
Afficher tous les prénoms commençant par une lettre compriseentre "a" et "m"
Note : penser aux cas des noms composés!
E. Comets (UMR738) Introduction à R - Novembre 2009 13 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Exercice (1)
Créez un data.frame anniv comprenant 3 colonnescolonne 1 : les prénoms des élèves de la classecolonne 2 : les nomscolonne 3 : les dates de naissance en format "20-10-2004"
Nommez les colonnes, et écrivez le fichier sous le nomAnniversaires.txt
les colonnes doivent avoir des nomsouvrez le fichier dans un éditeur de texte et regardez-lesi le format ne vous satisfait pas, recommencez
Lisez le fichier Anniversaires.txt et mettez le contenu dans anniv2les 2 data.frame anniv et anniv2 doivent être identiques (sinon,c’est sûrement un problème d’écriture...)
E. Comets (UMR738) Introduction à R - Novembre 2009 14 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Exercice (2)
Modifiez anniv2 pour que les dates aient le format "20/10/2004"afficher anniv2 selon l’ordre alphabétique des noms
Créez un deuxième data.frame, appelé demog contenantla liste des élèves par ordre alphabétique (noms et prénomsordonnés sur le nom)leur taille
Sauvez demog en utilisant write.csv pour faciliter l’importationultérieure dans un tableur
E. Comets (UMR738) Introduction à R - Novembre 2009 15 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Fonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
Exercice (3)
Pour chaque mois, calculez le nombre d’élèves nés ce mois-làtracez les mois de naissance par un diagramme en bâton
Y a-t-il deux élèves nés le même jour?
Tracez l’histogramme des années de naissance
Calculez l’âge de chaque élève (à la date d’aujourd’hui)
En utilisant la librairie datecalculez le temps depuis le dernier anniversaire dans la classedans combien de jours peut-on prévoir le prochain gâteau?
E. Comets (UMR738) Introduction à R - Novembre 2009 16 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Plan
Chaînes de caractèresFonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
FonctionsSyntaxeArguments et résultatAutres éléments des fonctions
Concepts avancés
LibrairiesInstallation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
E. Comets (UMR738) Introduction à R - Novembre 2009 17 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Créer une fonction
Pour créer MaFonction , fonction de (x,y) qui calcule (x+y)**2 etretourne son arrondi à 2 chiffres après la virgule, on écrit :
MaFonction <- function(x,y) {result <- (x+y)**2round(result,2)}
Utilisation comme une fonction native :
> MaFonction(4.267,5.334)[1] 92.18
Note : result est une variable interne détruite à la sortie duprogramme.
> resultErreur : Objet "result" non trouvé
E. Comets (UMR738) Introduction à R - Novembre 2009 18 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Syntaxe
Syntaxe :nom <- function(arguments) {instructions}
E. Comets (UMR738) Introduction à R - Novembre 2009 19 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Arguments
Deux types d’arguments spéciaux :
arguments avec une valeur par défaut
arguments additionnels en nombre non prédéfini : ... (ex :paramètres destinés à être passés à une sous-fonction appeléedans la fonction)
nom <- function(arguments,arg1=valeur,...) {instructions}Exemple : faire un ?matrix
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = N ULL)
Tous les arguments sont par défaut donc on peut l’appeler sansarguments :
> matrix()[,1]
[1,] NA
E. Comets (UMR738) Introduction à R - Novembre 2009 20 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Résultat (1)
Par défaut, la fonction renvoit comme résultat la dernière expressionavant la parenthèse finale. On peut spécifier une liste d’éléments àrendre à l’issue de l’exécution : returnExemple :
fourchette<-function(x) {return(min(x),max(x))
}> x<-1:100> y<-fourchette(x)Warning message:les renvois multi-arguments sont obsolètes in: return(min i = min(x), maxi = max(x))> y[[1]][1] 1[[2]][1] 100
E. Comets (UMR738) Introduction à R - Novembre 2009 21 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Résultat (2)
Le message d’avertissement précédent signale que nous avons utiliséune syntaxe archaïque. La bonne syntaxe est d’utiliser une listenommée.
Dans l’exemple précédent, la bonne syntaxe de fourchette serait :
fourchette<-function(x) {return(list(mini=min(x),maxi=max(x)))
}
E. Comets (UMR738) Introduction à R - Novembre 2009 22 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Format liste (1)
Une liste est un ensemble d’éléments pouvant être complètementdisparates. On crée une liste en utilisant list(), as.list() .
> maliste<-list(c(1,2,5),c("Léa","Chloé"))> maliste[[1]][1] 1 2 5[[2]][1] "Léa" "Chloé"
Référencer l’élément i de la liste : list[[i]]
> maliste[[1]][1] 1 2 5
Ici les éléments de la liste sont des vecteurs, dont on peut accéder auxéléments comme pour n’importe quel vecteur :
> maliste[[2]][1][1] "Léa"
E. Comets (UMR738) Introduction à R - Novembre 2009 23 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Format liste (2)
Certains éléments de la liste peuvent être nommés et on peut alorsappeler ces éléments par leur nom (comme un dataframe) :
> maliste<-list(c(1,2,5),c("Léa","Chloé"),mat=matrix (5:8,ncol=2))[,1] [,2]
[1,] 5 7[2,] 6 8
On peut transformer une liste en un vecteur par l’instruction unlist()
> unlist(maliste)mat1 mat2 mat3 mat4
"1" "2" "5" "Léa" "Chloé" "5" "6" "7" "8"
Comme les fonctions retournent normalement une liste, nousrencontrerons beaucoup d’exemples de liste dès que nous utiliseronsR. En particulier, nous avons vu que les objets retournés par la plupartdes tests et fonctions de statistiques sont des listes.
E. Comets (UMR738) Introduction à R - Novembre 2009 24 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Format liste (2)
N’oubliez pas les fonctions names et attributes pour visualiser dequoi est composé une liste :
> names(maliste)[1] "" "" "mat"
La fonction lapply est un apply qui travaille sur les éléments d’uneliste, et renvoie elle-même une liste.
E. Comets (UMR738) Introduction à R - Novembre 2009 25 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Exercice
La fonction var calcule l’estimateur sans biais de la variance d’unepopulation à partir de l’échantillon donné en argument.
1 Écrire une fonction ma.variance qui calculera l’estimateur biaisé2 Modifier la fonction pour qu’elle admette un argument
supplémentaire biasedla fonction doit calculer la variance biaisée si biased vaut TRUE etnon biaisée sinonpar défaut le comportement de la fonction devrait être le mêmeque celui de var
E. Comets (UMR738) Introduction à R - Novembre 2009 26 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Contrôle
Messages d’erreurs :
arrêt de la fonction : stop("message")
affichage d’un message d’avertissement, mais l’exécutioncontinue : warning("message")
Lecture interactive de données : readline (lit des données jusqu’à lafrappe de enter/return) ou scan
Exemple
somme_int<-function() {cat("Entrez 3 nombres positifs \n")x<-scan(n=3)total<-sum(x)if(sum(x<0)) warning("J’avais dit positif! \n")cat("Somme=",total,"\n")}
E. Comets (UMR738) Introduction à R - Novembre 2009 27 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Exercice (1)
1 Écrire une fonction phi servant à calculer la fonction de densitéde probabilité d’une loi normale centrée réduite. La fonctiondevrait prendre en argument un vecteur de valeurs de x
comparer les résultats avec ceux de la fonction dnorm
2 La fonction suivante comprend plusieurs erreurs. Expliquerl’origine des messages d’erreur et modifiez là pour qu’ellefonctionne correctement.
toto<-mafonction(x,y=true) {if(y=T) mean(x*a) else print(mean(x*a,na.rm=T)return(res=sum(x),)
}
E. Comets (UMR738) Introduction à R - Novembre 2009 28 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Exercice (2)
3 La fonction notes.finales ci-dessous calcule la note d’un grouped’étudiants à partir de deux informations : (1) une matricecontenant la note sur 100 de chacun des étudiants à chacunedes évaluations, et (2) un vecteur contenant la pondération dechacune des évaluations. Modifiez-la pour qu’elle n’utilise plus deboucles en minimisant le nombre d’opérations.
notes.finales <- function(notes, p) {netud <- nrow(notes)neval <- ncol(notes)final <- (1:netud) * 0for(i in 1:netud) {
for(j in 1:neval) {final[i] <- final[i] + notes[i, j] * p[j]
}}final
}
E. Comets (UMR738) Introduction à R - Novembre 2009 29 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
SyntaxeArguments et résultatAutres éléments des fonctions
Exercice (3)
4 Reprenez l’exercice de la limite centrale et structurez votre codepour le mettre dans une ou plusieurs fonctions. Le nombre detirages pourra être un paramètre de la fonction. Une fonction plussophistiquée pourrait prendre en argument la fonction elle-mêmeainsi que ses arguments éventuels (exemple, moyenne etvariance pour la loi normale,...).
E. Comets (UMR738) Introduction à R - Novembre 2009 30 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Plan
Chaînes de caractèresFonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
FonctionsSyntaxeArguments et résultatAutres éléments des fonctions
Concepts avancés
LibrairiesInstallation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
E. Comets (UMR738) Introduction à R - Novembre 2009 31 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Créer des objets automatiquement (1)
Pour l’instant on a toujours été obligés de définir des objetsexplicitement. Imaginons maintenant que l’on veuille créer 10 vecteursappelés data1, data2, ..., et contenant quelque chose, par exemple lecontenu de 10 fichiers, ou 10 vecteurs de nombres aléatoires.
Bien sûr, on est maintenant de vrais R-iens, donc des fainéants, et onne veut pas écrire 10 fois la même instruction. La fonction assign vanous servir à régler ce problème. Sa syntaxe est la suivante :
assign(x, value)
value doit contenir une expression R et x est le nom de l’objet quel’on veut créer. Par exemple :
> assign("x",1:10)> x
[1] 1 2 3 4 5 6 7 8 9 10
E. Comets (UMR738) Introduction à R - Novembre 2009 32 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Créer des objets automatiquement (2)
Si maintenant à la place de "x", on veut créer plusieurs objetsautomatiquement, on utilise une boucle :
> for(i in 1:10)+ assign(paste("data",i,sep=""),runif(10))
Les objets data1, data2, ..., data10 sont maintenant créés :
> data1[1] 0.53307449 0.18208010 0.29576918 0.09753157 0.021835 21 0.65040853[7] 0.39470130 0.16281711 0.02637985 0.29678793
> data2[1] 0.28548828 0.99769744 0.68465983 0.26529851 0.818960 10 0.92603065[7] 0.02556871 0.62224290 0.42105758 0.62064090
E. Comets (UMR738) Introduction à R - Novembre 2009 33 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Autres
.Last.value contient le résultat de la dernière instruction non attribuée.Elle peut être récupérée pour la mettre dans un objet :
> 1:5[1] 1 2 3 4 5> x<-.Last.value> x[1] 1 2 3 4 5
E. Comets (UMR738) Introduction à R - Novembre 2009 34 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Quelques pièges
Précédence des opérateurs : en général, elle est assez intuitive. Laseule qui pose problème est celle de l’opérateur : :
> x<-2> x+1:5[1] 3 4 5 6 7
Coertion : les modes d’un objet peuvent être ordonnés selon laquantité d’information nécessaire pour représenter l’objet selon lasuite logical, numeric, complex, character. Quand un objet est créé, lemode le plus élevé nécessaire pour représenter tous les objets estutilisé. Comparez :
> c(T, NA)[1] T NA> c(T, as.numeric(NA))[1] 1 NA
E. Comets (UMR738) Introduction à R - Novembre 2009 35 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Quelques réflexions (1)
La puissance de R vient des 5 caractéristiques suivantes :1 la diversité des variables traitées
type : numeric, logical, character, complexorganisation : vecteur, matrice, data.frame, listeattribut(s) : permet de stocker d’autres informations sur l’objet queson contenu
2 la base vectorielletrès vite le fait que toutes les fonctions s’adaptent à la taille duvecteur devient un automatismeattention aux opérations de type x*y quand x et y n’ont pas lamême longueur
3 l’indiçageextraction ou remplacement de sous-ensembles d’un objetdes expressions comme x[1:2], x[-c(1)], x["colonne1"],x[x>0],x$colonne1, x[[1]],... deviennent très vite un automatisme quandon utilise R
E. Comets (UMR738) Introduction à R - Novembre 2009 36 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Quelques réflexions (2)
4 la programmation orientée-objetde nombreuses fonctions sont dites surchargées (enprogrammation), i.e. elles sont capables de déterminer le typed’objet qui leur est donné en argument et de s’y adapterexemple : la fonction print qui sait traiter indifféremment desscalaires ou des résultats de fonctions statistiques complexes
5 les graphismesles graphes sont créés par un ensemble de commandes,l’utilisateur contrôle tous les éléments du graphe et peut ainsi lerendre aussi complexe que possiblele graphe est indépendant de l’outil de sortie (rendu à l’écran,sortie postscript ou pdf)la reproductibilité d’une machine à l’autre ou d’une séance detravail à l’autre est parfaite
E. Comets (UMR738) Introduction à R - Novembre 2009 37 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Exercice (1)
La fonction de densité de probabilité et la fonction de répartition de la loi dePareto de paramètres α et λ sont, respectivement,
f (x) =αλα
(x + λ)α+1
g(x) = 1−
(
λx + λ
)α
La fonction suivante simule un échantillon aléatoire de taille n issu d’unedistribution de Pareto de paramètres α et λ :
rpareto <- function(n, alpha, lambda)lambda * (runif(n)^(-1/alpha) - 1)
1 Simuler, en utilisant la fonction rpareto ci-dessus, cinqéchantillons aléatoires de tailles 100, 150, 200, 250 et 300 d’uneloi de Pareto avec α = 2 et λ = 5000. Les échantillons aléatoiresdevraient être stockés dans une liste
E. Comets (UMR738) Introduction à R - Novembre 2009 38 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Exercice (2)
2 En utilisant la fonction paste , nommer les éléments de la listecréée en (1) echantillon1, ..., echantillon5.
3 Calculer la moyenne de chacun des échantillons aléatoiresobtenus en (1). Retourner le résultat dans un vecteur.
4 Ecrire des fonctions R pour calculer les fonctions de densité et derépartition de la loi de Pareto, pour des paramètres α et λquelconques.
5 En utilisant une des fonctions de (4), évaluer la fonction derépartition de la loi de Pareto (2,5000) en chacune des valeurs dechacun des échantillons aléatoires obtenus en (1). Retourner lesvaleurs de la fonction de répartition en ordre croissant pourchaque échantillon.
6 Faire l’histogramme des données du cinquième échantillonaléatoire à l’aide de la fonction hist .
E. Comets (UMR738) Introduction à R - Novembre 2009 39 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Plan
Chaînes de caractèresFonctions manipulation des chaînesRecherche et remplacementDécoupage de chaînes
FonctionsSyntaxeArguments et résultatAutres éléments des fonctions
Concepts avancés
LibrairiesInstallation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
E. Comets (UMR738) Introduction à R - Novembre 2009 40 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Installation de librairies depuis un fichier local
Téléchargement sur le site du CRAN (versions Windows (.zip) et Linux(.tar.gz)) :http://cran.cict.fr/ (onglet Packages, sous Software)Installation :
sur votre machine Windows : Menu ("install from local zip")sur une machine Linux
demander gentiment à l’administrateur (droits)utiliser la commande R CMD INSTALL -l cheminnompackage.tar.gz
Exemple dans une fenêtre terminal (prompt [eco ]$ ) en supposantque je viens de télécharger le package abind.tar.gz :[eco ~]$ echo $RHOME/usr/lib/R[eco ~]$ R CMD INSTALL -l /usr/lib/library abind.tar.gz
Installation en ligne possible (Windows : depuis le menu ; Linux :?install.packages).
E. Comets (UMR738) Introduction à R - Novembre 2009 41 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Utilisation de librairies
Savoir quelles librairies sont installées sur le système :
> library()Packages dans la bibliothèque ’/usr/lib/R/library’ :base The R Base Packageboot Bootstrap R (S-Plus) Functions (Canty)class Functions for Classificationcombinat combinatorics utilities....
Obtenir une brève description d’une librairie library(help="librairie") :
> library(help="nlme")Information sur le package ’nlme’
Description :Package: nlmeVersion: 3.1-62Date: 2005-07-25
E. Comets (UMR738) Introduction à R - Novembre 2009 42 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Index
Si la librairie est correctement empaquetée, elle comprend aussi unindex des fonctions définies dans la librairie.
Index :ACF Autocorrelation FunctionACF.gls Autocorrelation Function for gls ResidualsACF.lme Autocorrelation Function for lme Residuals...
E. Comets (UMR738) Introduction à R - Novembre 2009 43 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Utilisation de librairies
Chargement de la librairie nlme :
> library(nlme)
Une fois la librairie chargée, on peut obtenir de l’aide sur chaquefonction de la librairie comme d’habitude :
> help("ACF")ACF package:nlme R DocumentationAutocorrelation FunctionDescription:
This function is generic; method functions can be written
Voir les jeux de données définis dans une librairie
> data(package=nlme)Data sets in package ’nlme’:Alfalfa Split-Plot Experiment on Varieties of AlfalfaAssay Bioassay on Cell Culture Platebdf Language scores...
E. Comets (UMR738) Introduction à R - Novembre 2009 44 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Fonctions combinatoires : librairie combinat
3 fonctions particulièrement utiles dans cette librairie :
combn(x,m) génère toutes les combinaisons de m éléments de xpermn(x) génère toutes les permutations des éléments de xrmultinomial(n,p) génère des échantillons aléatoires dans des distribu-
tions multinomiales
> x<-c(1:3)> combn(x,2)
[,1] [,2] [,3][1,] 1 1 2[2,] 2 3 3> combn(x,3)[1] 1 2 3
Note : la matrice renvoyée par combn doit être lue en colonnes.
E. Comets (UMR738) Introduction à R - Novembre 2009 45 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Fonctions combinatoires : librairie de base
Il existe d’autres fonctions combinatoires dans la librairie de base de R:
choose(n,k) nombre de permutationssample(x,n) tire un échantillon de n éléments de x (option re-
place=T pour faire un tirage avec remise)
> choose(length(x),2)[1] 3> sample(x,2)[1] 3 2
E. Comets (UMR738) Introduction à R - Novembre 2009 46 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Exercice - librairie combinat
Charger la librairie combinat. Créer un vecteur x contenant lessept couleurs du spectre lumineux.
Combien y a-t-il de permutations possibles des éléments de x?(utiliser les fonctions de la librairie chargée)
Vous décidez de repeindre votre salon en utilisant 4 couleursseulement parmi ces 7. Combien de possibilités avez-vous?
utiliser les fonctions de la librairie chargéevérifier le résultat avec la fonction choose()
E. Comets (UMR738) Introduction à R - Novembre 2009 47 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Dates et heures
La librairie de base contient des fonctions pour afficher la date oucalculer le temps passé à travailler.
date() donne la date et l’heuresystem.time(expr) le temps utilisé par le système pour évaluer
l’expression exprproc.time() le temps depuis lequel l’instance de R fonctionne
(utilisé pour évaluer le temps passé dans un pro-gramme par exemple)
> date()[1] "Thu Oct 5 13:07:04 2006"> t1<-proc.time()> jenefaisrien<-0> for(i in 1:10000) jenefaisrien<-jenefaisrien+1> t2<-proc.time()> cat("Temps dans la boucle : ",(t2-t1)[1],"secondes \n")Temps dans la boucle : 0.04 secondes
E. Comets (UMR738) Introduction à R - Novembre 2009 48 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Manipulation de dates : librairie date
Cette librairie définit des objets de type ’date julienne’ (ex. : 12May99,12May2006) et possède des fonctions pour manipuler et coder cesobjets. Ces objets ne sont pas de chaînes de caractère, mais des"chiffres dates" considérés comme des nombres.
as.date(x) convertit une chaîne de caractères en une date juli-enne; formats acceptés: 8/31/56, 8-31-1956, 31 856, 083156, 31Aug56, August 31 1956
dmy.date(d,m,y) renvoie la date julienne correspondantdmy.date() à partir d’une date julienne, renvoie une liste avec
comme éléments month, day et yearUtilisation> today<-mdy.date(11,9,2006)> noel<-mdy.date(12,24,2006)> today[1] 9Nov2006> cat("Plus que ",noel-today,"jours avant Noel!\n")Plus que 45 jours avant Noel!
E. Comets (UMR738) Introduction à R - Novembre 2009 49 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Exercice - librairie date
Ecrire la date d’aujourd’hui dans une chaîne de caractères now
En utilisant les fonctions de la librairie dateafficher le nombre de jours écoulés depuis votre naissanceafficher la date où nous serons dans exactement deux mois, dansle format 20/10/2004
Utilisez les fonctions de manipulation de chaînes pour :décomposer now en plusieurs élémentsafficher la date simpleafficher l’heureafficher l’heure qu’il sera dans une heure
E. Comets (UMR738) Introduction à R - Novembre 2009 50 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : statistiques
nortest: Tests for normality
mnormt et mvtnorm: The multivariate normal and t distributions (2packages avec des petites différences)
multcomp: Multiple tests and simultaneous confidence intervals forthe one-way layout
exactRankTests: Exact Distributions for Rank and Permutation Tests
cramer: Multivariate nonparametric Cramer-Test for thetwo-sample-problem. This not distribution free,nonparametric two-sample-test can be applied onmultivariate data as well as univariate data.
equivalence: Provides tests and graphics for assessing tests ofequivalence
Design et Hmisc: Regression modeling, testing, estimation, validation,graphics, prediction
E. Comets (UMR738) Introduction à R - Novembre 2009 51 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : survie
cmprsk: Subdistribution Analysis of Competing Risks
CompetingRiskFrailty: Competing Risk Model with Frailties for RightCensored Survival
coxrobust: Robust Estimation in Cox Model. Fit robustlyproportional hazards regression model
km.ci: Confidence intervals for the Kaplan-Meier estimator
E. Comets (UMR738) Introduction à R - Novembre 2009 52 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : mathématiques
BRugs: OpenBUGS and its R interface BRugs.BUGS=Bayesian inference Using Gibbs Sampling, apiece of computer software for the Bayesian analysis ofcomplex statistical models using Markov chain MonteCarlo (MCMC) methods (voir aussi R2WinBUGS)
Matrix: Classes and methods for dense and sparse matricesand operations on them using Lapack, CSparse andCHOLMOD
papply, biopara, rpvm, taskPR: parallélisation de calculs
CGIwithR: Facilities for the use of R to write CGI scripts
E. Comets (UMR738) Introduction à R - Novembre 2009 53 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : bayésien
BRugs: OpenBUGS and its R interface BRugs.BUGS=Bayesian inference Using Gibbs Sampling, apiece of computer software for the Bayesian analysis ofcomplex statistical models using Markov chain MonteCarlo (MCMC) methods (voir aussi R2WinBUGS)
bayesm: Bayesian inference for marketing/micro-econometrics
mcmcpack: Markov chain Monte Carlo (MCMC) package
E. Comets (UMR738) Introduction à R - Novembre 2009 54 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : classification
tree: arbres binaires de classification
randomForest: forêts aléatoires
gbm: Generalized Boosted Regression Models
lars: LASSO
rpart: Recursive partitioning and regression trees
E. Comets (UMR738) Introduction à R - Novembre 2009 55 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : mathématiques
Matrix: Classes and methods for dense and sparse matricesand operations on them using Lapack, CSparse andCHOLMOD
papply, biopara, rpvm, taskPR: parallélisation de calculs
odesolve: résolution d’équations différentielles
E. Comets (UMR738) Introduction à R - Novembre 2009 56 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : analyse d’essais cliniques
blockrand: Randomization for block random clinical trials. Createrandomizations for block random clinical trials. Can alsoproduce a pdf file of randomization cards.
crossdes: Design and Randomization in Crossover Studies.Contains functions for the construction andrandomization of balanced carryover balanced designs.Contains functions to check given designs for balance.Also contains functions for simulation studies on thevalidity of two randomization procedures.
E. Comets (UMR738) Introduction à R - Novembre 2009 57 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : pharmacologie
drc: Non-linear regression analysis for multiple curves withfocus on concentration-response, dose-response andtime-response curves used, for example, inenvironmental sciences, pharmacology, toxicology andweed science
drcfit: drfit provides basic and easy-to-use functions for fittingdose-response curves to dose-response data,calculating some (eco)toxicological parameters andplotting the results.
PKfit: nonlinear regression (including a genetic algorithm)program which is designed to deal with curve fitting forpharmacokinetics (PK) data analysis in R
E. Comets (UMR738) Introduction à R - Novembre 2009 58 / 59
Chaînes de caractèresFonctions
Concepts avancésLibrairies
Installation et utilisationLibrairies utiles - combinatLibrairies utiles - dateQuelques librairies intéressantes
Autres librairies : interface
gnomeGUI: GNOME Console for R. Provides a console for R underUnix-alikes based on GNOME
iplots: interactive graphics for R
abind: Combine multi-dimensional arrays. This is ageneralization of cbind and rbind. Takes a sequence ofvectors, matrices, or arrays and produces a single arrayof the same or higher dimension.
DBI: R Database Interface (communication between R andrelational database management systems)
R2HTML: HTML exportation for R objects
xtable: Export tables to LaTeX or HTML
session: Functions for interacting with, saving and restoring Rsessions
CGIwithR: Facilities for the use of R to write CGI scripts
E. Comets (UMR738) Introduction à R - Novembre 2009 59 / 59