59
Chaînes de caractères Fonctions Concepts avancés Librairies INTRODUCTION AU LOGICIEL R 5. Chaines de caractères. Fonctions. Librairies. Anne Dubois, Julie Bertrand, Emmanuelle Comets [email protected] INSERM UMR738 E. Comets (UMR738) Introduction à R - Novembre 2009 1 / 59

INTRODUCTION AU LOGICIEL R - 5. Chaines de caractères

Embed Size (px)

Citation preview

Chaînes de caractèresFonctions

Concepts avancésLibrairies

INTRODUCTION AU LOGICIEL R5. Chaines de caractères. Fonctions. Librairies.

Anne Dubois, Julie Bertrand, Emmanuelle Comets

[email protected]

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