Professional Documents
Culture Documents
J. R. Lobry
Universit Claude Bernard Lyon I France e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
Plan dtaill e e
Objets Exemples avec des valeurs numriques e Classes dobjets Classes et fonctions gnriques e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
Objet Expression
On peut ranger la valeur dune expression dans un objet pour son utilisation ultrieure : e
x <- 2 + 2 10 * x [1] 40
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
La division dun nombre non nul par zro done Inf ou -Inf en e fonction du signe du dnominateur : e
1/0 [1] Inf -1/0 [1] -Inf
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
NaN
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
NaN
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
NA
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Exemples avec des valeurs numriques e
is.finite(3.1415) [1] TRUE is.infinite(Inf) [1] TRUE is.nan(NaN) [1] TRUE is.na(NA) [1] TRUE
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Plan dtaill e e
Objets Exemples avec des valeurs numriques e Classes dobjets Classes et fonctions gnriques e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Classes
Nous avons vu des exemples dobjets contenant des valeurs numriques. Ces objets sont des instances de classe numeric : e
x <- 2 + 2 class(x) [1] "numeric"
a plusieurs classes dobjets importants que nous allons dtailler ci-apr`s. Citons par exemple : functions, vectors e e (numeric, character, logical), matrices, lists et data.frames.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Constructeurs
Souvent, les objets dune classe particuli`re sont crs avec une e ee fonction ayant le mme nom que la classe. On peut ainsi crer des e e objets vides.
numeric(5) [1] 0 0 0 0 0 complex(3) [1] 0+0i 0+0i 0+0i logical(4) [1] FALSE FALSE FALSE FALSE character(5) [1] "" "" "" "" ""
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
mode() et class()
Il y a de nombreux types dobjets dans . Pour un objet donn : e
mode(object) nous renseigne sur la faon dont lobjet est c stock, ce nest pas tr`s utile en pratique. e e class(object) nous donne la classe dun objet. Le principal intrt de la classe est que les fonctions gnriques (comme ee e e print() ou plot()) sachent quoi faire avec.
mode(pi) [1] "numeric" class(pi) [1] "numeric"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
Plan dtaill e e
Objets Exemples avec des valeurs numriques e Classes dobjets Classes et fonctions gnriques e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
methods("print")[1:20] [1] "print.acf" [2] "print.anova" [3] "print.aov" [4] "print.aovlist" [5] "print.ar" [6] "print.Arima" [7] "print.arima0" [8] "print.AsIs" [9] "print.aspell" [10] "print.Bibtex" [11] "print.browseVignettes" [12] "print.by" [13] "print.check_code_usage_in_package" [14] "print.check_demo_index" [15] "print.check_dotInternal" [16] "print.check_make_vars" [17] "print.check_package_code_syntax" [18] "print.check_package_CRAN_incoming" [19] "print.check_package_datasets" http://pbil.univ-lyon1.fr/R/cours/lang03.pdf Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e [20] "print.check_package_depends"
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
Pour conna les mthodes spcialises pour une classe, ici la tre e e e classe data.frame, on utilise encore la fonction methods() :
methods(class = "data.frame")[1:20] [1] [3] [5] [7] [9] [11] [13] [15] [17] [19] "[.data.frame" "[[<-.data.frame" "$<-.data.frame" "anyDuplicated.data.frame" "as.list.data.frame" "by.data.frame" "dim.data.frame" "dimnames<-.data.frame" "edit.data.frame" "formula.data.frame" "[[.data.frame" "[<-.data.frame" "aggregate.data.frame" "as.data.frame.data.frame" "as.matrix.data.frame" "cbind.data.frame" "dimnames.data.frame" "duplicated.data.frame" "format.data.frame" "head.data.frame"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
q q q q q q qq qq q q q q q q q q q q q q q qqq q q q qq q q q q q q q q q q q q q qq q q q q qq q q q q
x 3
q q q q qq qq qq q q q q q q q q q q q q
q qq qq q
qq q q qq q qq q q qq q
0 0
20
40
60
80
100
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
y 0 0 5 10
20
30
3 x
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
3 x
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Objets Classes et fonctions gnriques e e
Sil nexiste pas de mthode spcialise pour la classe dobjet, on e e e utilise la mthode par dfaut : e e
methods(class = "default")[1:20] [1] [3] [5] [7] [9] [11] [13] [15] [17] [19] "add1.default" "AIC.default" "ansari.test.default" "ar.burg.default" "as.array.default" "as.data.frame.default" "as.dist.default" "as.function.default" "as.list.default" "as.null.default" "aggregate.default" "all.equal.default" "anyDuplicated.default" "ar.yw.default" "as.character.default" "as.Date.default" "as.expression.default" "as.hclust.default" "as.matrix.default" "as.person.default"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Les fonctions
library(fortunes) fortune(52) Can one be a good data analyst without being a half-good programmer? The short answer to that is, 'No.' The long answer to that is, 'No.' -- Frank Harrell 1999 S-PLUS User Conference, New Orleans (October 1999)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Avant de passer aux fonctions, nous avons besoin de prciser e quelques points sur les expressions. Les expressions sont values pour crer des objets. Elles sont e e e constitues doprateurs (+, *, ^) et dautres objets (variables ou e e constantes) par exemple : 2 + 2, sin(x)^2.
a <- 2 + 2 a [1] 4 b <- sin(a)^2 b [1] 0.57275
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
a des blocs dexpressions qui sont une suite dexpressions encadres par des accolades. e Toutes les expressions dun bloc sont values les unes ` la e e a suite des autres. Tous les assignements de variables seront eectifs et tous les appels ` print() ou plot() auront les a eets collatraux attendus. e Mais le plus important est que le bloc entier est lui-mme une e expression dont la valeur sera la derni`re expression value e e e dans le bloc.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
monbloc <- { tmp <- 1:10 somme <- sum(tmp) } tmp [1] 1 2 3 4 5 6 7 8 9 10
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Arguments des fonctions
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Arguments des fonctions
La plupart des choses utiles dans sont faites en appelant des fonctions. Les appels de fonctions ressemblent ` un nom a suivi darguments entre parenth`ses. e Les arguments des fonctions peuvent tre tr`s nombreux. e e Lidentication de la valeur des arguments peut se faire de plusieurs mani`res de faon ` faciliter la vie de lutilisateur. e c a Cest une spcicit du langage S inspire de lassembleur JCL e e e des IBM 360.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Arguments des fonctions
Quand une fonction est appele, elle a besoin de savoir quelles e valeurs ont t donnes ` quels arguments. Cette identication de ee e a la valeur des arguments peut se faire de plusieurs mani`res : e Par position. Par nom (ventuellement abrg). e e e Par valeur par dfaut. e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication par position
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication par position
Cest la notation la plus compacte : on donne les arguments dans le mme ordre que celui de la fonction. e
args(plot.default) function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, ...) NULL
Les deux premiers arguments de la fonction plot() sont x et y. Ainsi, plot(ceci, cela) est quivalent ` plot(x = ceci, y = e a cela).
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication par nom
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication par nom
Cest la faon la plus sre et la plus souple de contrler la valeur c u o des arguments, en spciant leur nom de mani`re explicite. Ceci e e neutralise lidentication par position, de sorte que nous pouvons crire plot(y = cela, x = ceci) et obtenir le mme rsultat. e e e Les noms formels peuvent tre abrgs tant que : e e e labrviation nest pas ambigu. e e largument nest pas apr`s e ...
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication par nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication par nom
Dans le dernier cas, largument col = "" est absorb dans e largument . . . . cest donc une cha vide qui va tre recycle ne e e pour tre colle ` tous les lments de letters avec la valeur par e e a ee dfaut pour sep. e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication avec la valeur par dfaut e
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Identication avec la valeur par dfaut e
Les arguments ont souvent des valeurs par dfaut. Dans ce cas, si e rien nest prcis au moment de lappel de la fonction, ce sont ces e e valeurs par dfaut qui seront utilises. e e
args(paste) function (..., sep = " ", collapse = NULL) NULL
Par exemple, si rien nest prcis pour largument sep de la e e fonction paste() on utilisera la cha de caract`re " ", cest ` ne e a dire un espace.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Dnir ses propres fonctions e
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Dnir ses propres fonctions e
expr : typiquement un bloc dexpressions. Dans la fonction il peut y avoir un appel ` return(val) qui arrte a e la fonction et renvoie la valeur val. Si rien nest prcis la fonction e e renvoie la valeur de la derni`re expression du bloc. e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Dnir ses propres fonctions e
Dnition de la fonction : e
hello <- function() { print("Hello world") }
Appel de la fonction :
hello() [1] "Hello world"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Dnir ses propres fonctions e
mafonction <- function(a = 1, b = 2, c) { resultat <- c(a, b, c) names(resultat) <- c("a", "b", "c") return(resultat) } mafonction(6, 7, 8) a b c 6 7 8 mafonction(10, c = "string") a "10" b c "2" "string"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Dnir ses propres fonctions e
La fonction args()
Pour une fonction donne, la liste de ses arguments (avec les e valeurs par dfaut ventuelles) est donne par la fonction args() : e e e
args(mafonction) function (a = 1, b = 2, c) NULL args(plot.default) function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, ...) NULL
Pour les fonctions qui nous sont assez famili`res, la simple e consultation de la liste des arguments remplace parfois avantageusement la lecture de la documentation.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Dnir ses propres fonctions e
La fonction body()
Pour une fonction donne, le corps de la fonction est donne par la e e fonction body :
body(mafonction) { resultat <- c(a, b, c) names(resultat) <- c("a", "b", "c") return(resultat) }
On peut aussi entrer le nom de la fonction sans les parenth`ses e pour avoir args()+body() :
mafonction function (a = 1, b = 2, c) { resultat <- c(a, b, c) names(resultat) <- c("a", "b", "c") return(resultat) }
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Largument spcial point-point-point e
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Largument spcial point-point-point e
point-point-point . . .
Largument point-point-point permet ` une fonction a daccepter un nombre quelconque darguments. Largument point-point-point (. . . ) indique que la fonction accepte nimporte quoi dautre comme argument. Ce quil adviendra de ces arguments est dtermin par la fonction. En e e gnral ils sont transmis ` dautres fonctions. Par exemple, e e a une fonction graphique de haut niveau transmettra largument point-point-point ` des fonctions graphiques de bas niveau a pour traitement.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Largument spcial point-point-point e
10
q q q q q q q q q q
y 2 4
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
10
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Largument spcial point-point-point e
8
q
6
q
4
q
2
q
10
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Neutralisation de lachage automatique
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Neutralisation de lachage automatique
Lachage automatique
Au niveau de la console de commande , les objets sont achs e automatiquement quand on donne leur nom sans les aecter ` une a variable.
tmp <- "hello" tmp [1] "hello"
Cest comme si on avait fait print() sur cet objet Ceci narrive pas systmatiquement, e a la possibilit de e dsactiver cet achage automatique. e Lachage automatique ne se produit jamais ` lintrieur a e dune fonction. Cela peut parfois conduire ` des comportements surprenants. a Utilisez toujours un appel explicite ` la fonction print() si a vous voulez que votre fonction ache la valeur dun objet.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Neutralisation de lachage automatique
Lachage automatique
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Porte des variable e
Plan dtaill e e
Fonctions Blocs Arguments des fonctions Identication par position Identication par nom Identication avec la valeur par dfaut e Dnir ses propres fonctions e Largument spcial point-point-point e Neutralisation de lachage automatique Porte des variable e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Porte des variable e
Quand une expression fait appel ` une variable, comment la a valeur de cette variable est dtermine ? e e utilise ce que lon appelle la port lexicale des variables, e inspire du langage Scheme. e Ce choix permet de simplier lcriture des fonctions. e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Porte des variable e
Si une variable nest pas trouve ` lintrieur de la fonction, e a e elle est recherche en dehors de la fonction. Le dtail de ce e e mcanisme est complexe, mais tout ce que lon a ` retenir est e a que :
une variable dnie ` lextrieur de la fonction est accessible e a e aussi dans la fonction. Si deux variables avec le mme nom e sont dnies ` lintrieur et ` lextrieur de la fonction, cest la e a e a e variable locale qui sera utilise. e
Une erreur aura lieu si aucune variable avec le nom demand e nest trouve. e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Porte des variable e
mavariable <- 1 mafonction1 <- function() { mavariable <- 5 print(mavariable) } mafonction1() [1] 5 mavariable [1] 1 mafonction2 <- function() { print(mavariable) } mafonction2() [1] 1
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Fonctions Porte des variable e
La porte lexicale des variables dans e permet de simplier lcriture des fonctions embo ees en autorisant des constructions e t du type :
cube <- function(n) { carre <- function() n * n n * carre() } cube(2) [1] 8
Dans la plupart des langages de programmation, la fonction carre ne peut pas tre dnie ainsi parce que n est inconnue (sauf ` e e a dnir n globalement). e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Vecteurs
fortune(75) Eric Lecoutre: I don't want to die being idiot... Peter Dalgaard: With age, most of us come to realise that that is the only possible outcome. -- Eric Lecoutre and Peter Dalgaard R-help (October 2004)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
La longueur des vecteurs est donne par la fonction length(), e cest le nombre dlments du vecteur : ee
x <- c(1, 2, 3, 4, 5) length(x) [1] 5 letters [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" [17] "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" length(letters) [1] 26
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Valeurs particuli`res e
NA Valeur manquante (Not Available) NaN Pas un nombre (Not a Number, e.g., 0/0) -Inf, Inf Inni positif ou ngatif, e.g. 1/0 e NULL Objet nul, utilis surtout en programmation e La bonne gestion des valeurs manquantes est une spcicit des e e bons logiciels de statistiques. Attention, NA nest pas un NaN, ni une cha de caract`res : ne e
is.na(c(1, NA)) [1] FALSE TRUE is.na(paste(c(1, NA))) [1] FALSE FALSE
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
seq()
seq(from = 1, to = 5, by = 0.5) [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 seq(along = letters) [1] 1 2 3 4 [23] 23 24 25 26 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
loprateur : e
Pour les sries enti`res il est plus commode dutiliser loprateur e e e deux-points ( :) ou la fonction seq_len() :
1:10 [1] -5:5 [1] -5 -4 -3 -2 -1 6:-6 [1] 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 seq_len(10) [1] 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
c()
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
rep()
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
Cration de vecteurs e
Il est parfois utile de pouvoir crer des vecteurs vides pour pouvoir e les manipuler ensuite avec une boucle explicite. Pour les types simples ceci ce fait avec les fonctions suivantes :
numeric(10) [1] 0 0 0 0 0 0 0 0 0 0 logical(5) [1] FALSE FALSE FALSE FALSE FALSE character(5) [1] "" "" "" "" ""
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Fonctions de cration de vecteurs e
Cration de vecteurs e
Voici un exemple dutilisation pour calculer les carrs des dix e premiers entiers :
x <- numeric(10) for (i in 1:10) x[i] <- i^2 x [1] 1 4 9 16 25 36 49 64 81 100
Mais sous on utilise dans ce cas plutt une construction plus o compacte du type :
x <- (1:10)^2 x [1] 1 4 9 16 25 36 49 64 81 100
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation des vecteurs
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation des vecteurs
Lextraction de llment de rang k dun vecteur se fait avec ee loprateur crochet ([) : e
letters[10] [1] "j"
` A noter :
letters[100] [1] NA
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation des vecteurs
Indexation
Lextraction dun ou plusieurs lments dun vecteur se fait par ee lindexation. Il y a plusieurs types dindexation possibles sous , dont : Indexation par un vecteur dentiers positifs Indexation par un vecteur dentiers ngatifs e Indexation par un vecteur logique Indexation par un vecteur de noms
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par des entiers positifs
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par des entiers positifs
Points intressants : e Lutilisation dun indice suprieur ` la longueur du vecteur e a donne un NA. Les indices peuvent tre rpts, faisant quun lment est e e ee ee slectionn plusieurs fois. e e Cest assez utile en pratique.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par des entiers ngatifs e
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par des entiers ngatifs e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par un vecteur logique
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par un vecteur logique
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par un nom
Plan dtaill e e
Vecteurs Exemples de vecteurs Fonctions de cration de vecteurs e Indexation des vecteurs Indexation par des entiers positifs Indexation par des entiers ngatifs e Indexation par un vecteur logique Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par un nom
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Vecteurs Indexation par un nom
On ne peut pas directement exclure des lments par leur nom, il ee faut utiliser la fonction match() pour rcuprer leur rang avec des e e constructions du type :
x a 1 b 2 d 4 b 2 c 3 e 5 c 3 d 4 g 7 d 4 e 5 h 8 e 5 f 6 f 6 g 7 g 7 h 8 h 8 i j 9 10
x[-match("a", names(x))] i j 9 10
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Matrices et tableaux
fortune(62) Please bear with a poor newbee, who might be doing everything backwards (I was brought up in pure math). -- Thomas Poulsen R-help (May 2004)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Matrices et tableaux
Les matrices (et plus gnralement les tableaux de dimensions e e quelconques) sont stockes dans e comme des vecteurs ayant des dimensions :
x <- 1:12 dim(x) <- c(3, 4) x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 4 7 10 2 5 8 11 3 6 9 12
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
nrow() et ncol()
Les fonctions nrow() et ncol() donnent le nombre de lignes et le nombre de colonnes dune matrice, respectivement :
x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 4 7 10 2 5 8 11 3 6 9 12
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
rownames() et colnames()
On peut donner des noms aux lignes et aux colonnes avec les fonctions rownames() et colnames() :
rownames(x) <- paste("ligne", 1:nrow(x), sep = "") x ligne1 ligne2 ligne3 [,1] [,2] [,3] [,4] 1 4 7 10 2 5 8 11 3 6 9 12
colnames(x) <- paste("colonne", 1:ncol(x), sep = "") x ligne1 ligne2 ligne3 colonne1 colonne2 colonne3 colonne4 1 4 7 10 2 5 8 11 3 6 9 12
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Cration de matrices e
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Cration de matrices e
La fonction matrix()
Les matrices peuvent aussi tre cres facilement avec la fonction e ee matrix() en prcisant le nombre de lignes nrow et de colonnes e ncol :
x <- matrix(1:12, nrow = 3, ncol = 4) x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 4 7 10 2 5 8 11 3 6 9 12
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Cration de matrices e
La fonction matrix()
Pour remplir une matrice ligne par ligne on utilise largument byrow :
x <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE) x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 2 3 4 5 6 7 8 9 10 11 12
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Cration de matrices e
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Cration de matrices e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Cration de matrices e
Les matrices ne sont pas forcment numeric, elles peuvent tre e e character ou logical, par exemple :
matrix(month.name, nrow = 6) [1,] [2,] [3,] [4,] [5,] [6,] [,1] "January" "February" "March" "April" "May" "June" [,2] "July" "August" "September" "October" "November" "December"
Mais tous les lments sont toujours du mme type dans une ee e matrice.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Transposition
Les oprations arithmtiques et les fonctions mathmatiques e e e usuelles travaillent toujours lment par lment. ee ee
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Addition
x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 2 3 4 5 6 7 8 9 10 11 12 [,1] [,2] [,3] [,4] 2 4 6 8 10 12 14 16 18 20 22 24
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Soustraction
x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 2 3 4 5 6 7 8 9 10 11 12 [,1] [,2] [,3] [,4] 0 0 0 0 0 0 0 0 0 0 0 0
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 2 3 4 5 6 7 8 9 10 11 12 [,1] [,2] [,3] [,4] 1 4 9 16 25 36 49 64 81 100 121 144
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Division
x [1,] [2,] [3,] x/x [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 1 1 1 1 1 1 1 1 1 1 1 [,1] [,2] [,3] [,4] 1 2 3 4 5 6 7 8 9 10 11 12
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Fonction mathmatique e
log(x) [,1] [,2] [,3] [,4] [1,] 0.000000 0.6931472 1.098612 1.386294 [2,] 1.609438 1.7917595 1.945910 2.079442 [3,] 2.197225 2.3025851 2.397895 2.484907
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
pi * x [,1] [,2] [,3] [,4] [1,] 3.141593 6.283185 9.424778 12.56637 [2,] 15.707963 18.849556 21.991149 25.13274 [3,] 28.274334 31.415927 34.557519 37.69911
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
Multiplication matricielle
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
solve(x) [,1] [,2] [,3] [1,] 1.291667 -2.166667 0.9305556 [2,] -1.166667 1.666667 -0.6111111 [3,] 0.375000 -0.500000 0.1805556 zapsmall(solve(x) %*% x) [1,] [2,] [3,] [,1] [,2] [,3] 1 0 0 0 1 0 0 0 1
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Matrices et tableaux Oprations avec des matrices e
eigen(x) $values [1] 112.9839325 $vectors [,1] [,2] [,3] [1,] -0.3993327 -0.8494260 0.7612507 [2,] -0.5511074 -0.4511993 -0.6195403 [3,] -0.7326760 0.2736690 0.1914866 zapsmall(solve(eigen(x)$vectors) %*% x %*% eigen(x)$vectors) [,1] [,2] [,3] [1,] 112.9839 0.00000 0.00000 [2,] 0.0000 -6.28797 0.00000 [3,] 0.0000 0.00000 0.30404 -6.2879696 0.3040371
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Les facteurs
fortune(59) Let's not kid ourselves: the most widely used piece of software for statistics is Excel. -- Brian D. Ripley ('Statistical Methods Need Software: A View of Statistical Computing') Opening lecture RSS 2002, Plymouth (September 2002)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Les facteurs sont la reprsentation sous e des variables qualitatives (e.g., la couleur des yeux, le genre (, ), un niveau de douleur). Les valeurs possibles dune variable qualitative sont les modalits (levels). e Il existe deux types de variables qualitatives : Les variables qualitatives non ordonnes, par exemple le genre e (, ).
Les variables qualitatives ordonnes, par exemple un niveau de e douleur (rien, lger, moyen, fort). e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
douleur <- c("rien", "fort", "moyen", "moyen", "leger") douleur [1] "rien" "fort" "moyen" "moyen" "leger"
fdouleur <- factor(douleur, levels = c("rien", "leger", "moyen", "fort"), ordered = TRUE) fdouleur [1] rien fort moyen moyen leger Levels: rien < leger < moyen < fort
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Attention, si largument levels nest pas prcis, cest lordre e e alphabtique qui sera utilis. Cest une solution qui nest pas e e portable et qui ne donne pas forcment ce que lon veut : e
douleur <- c("rien", "fort", "moyen", "moyen", "leger") douleur [1] "rien" "fort" "moyen" "moyen" "leger"
fdouleur <- factor(douleur, ordered = TRUE) fdouleur [1] rien fort moyen moyen leger Levels: fort < leger < moyen < rien
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
couleurs <- c("bleu", "bleu", "bleu", "blanc", "rouge", "rouge", "noir") fcouleurs <- factor(couleurs, levels = c("vert", "bleu", "blanc", "rouge")) fcouleurs [1] bleu bleu bleu blanc rouge rouge <NA> Levels: vert bleu blanc rouge
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Facteurs Manipulation des facteurs
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Facteurs Manipulation des facteurs
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Facteurs Manipulation des facteurs
levels(fcouleurs) <- c("green", "blue", "white", "red") fcouleurs [1] blue blue blue white red Levels: green blue white red red <NA>
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Facteurs Manipulation des facteurs
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Les listes
fortune(48) Release 1.0.0 (silence) Wow! Thank you! [...] If I am allowed to ask just one question today: How do you fit 48 hours of coding in an ordinary day? Any hints will be appreciated ... :-) -- Detlef Steuer (on 2000-02-29) R-help (February 2000)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Intrt des listes ee
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Intrt des listes ee
Les listes sont une structure de donnes tr`s exible et tr`s e e e utilise dans . e Une liste est un vecteur dont les lments ne sont pas ee ncessairement du mme type. Un lment dune liste est un e e ee objet quelconque, y compris une autre liste. la fonction list() permet de crer des listes. e les lments de la liste sont en gnral extraits par leur noms ee e e (avec loprateur $) e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Intrt des listes ee
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Intrt des listes ee
Les fonctions sont aussi des objets . Dans ce cas, llment ee fonction est la fonction seq() et peut tre appele comme e e nimporte quelle autre fonction.
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
Plan dtaill e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
Les listes
Voyons un exemple concret avec un jeu de donnes sur la prise e alimentaire dans un groupe de femmes avant et apr`s leurs r`gles : e e
prise.avant <- c(5260, 5470, 5640, 6180, 6390, 6515) prise.apres <- c(3910, 4220, 3885, 5160, 5645, 4680) maliste <- list(avant = prise.avant, apres = prise.apres) maliste $avant [1] 5260 5470 5640 6180 6390 6515 $apres [1] 3910 4220 3885 5160 5645 4680
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
Un lment dune liste peut tre extrait par nom avec loprateur ee e e dollar ($) ou par position avec loprateur double crochet ([[). e
maliste$avant [1] 5260 5470 5640 6180 6390 6515 maliste[[2]] [1] 3910 4220 3885 5160 5645 4680
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
Dirence entre [[ et [ e
Attention : loprateur [[ ne permet dextraire quun seul lment e ee ` la fois (` la dirence de loprateur [ pour les vecteurs). a a e e Loprateur [ sur les listes ne fait pas dextraction mais renvoie e une liste avec les lments slectionns. ee e e
maliste <- list(a = 1, b = 2, c = 3) maliste[[2]] [1] 2 maliste$b [1] 2 maliste[c(1, 3)] $a [1] 1 $c [1] 3
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Listes Manipulation des listes
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Le type data.frame
fortune(2) Bug, undocumented behaviour, feature? I don't know. It all seems to work in 1.6.0, so everyone should downgrade now... :) -- Barry Rowlingson R-help (July 2003)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Intrt des data.frame ee
Plan dtaill e e
Data.frame Intrt des data.frame ee Cration dun data.frame e Rarrangements dun data.frame e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Intrt des data.frame ee
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Intrt des data.frame ee
Iris setosa
Iris versicolor
Iris virginica
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Intrt des data.frame ee
data(iris) head(iris) 1 2 3 4 5 6 Sepal.Length Sepal.Width Petal.Length Petal.Width Species 5.1 3.5 1.4 0.2 setosa 4.9 3.0 1.4 0.2 setosa 4.7 3.2 1.3 0.2 setosa 4.6 3.1 1.5 0.2 setosa 5.0 3.6 1.4 0.2 setosa 5.4 3.9 1.7 0.4 setosa
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Cration dun data.frame e
Plan dtaill e e
Data.frame Intrt des data.frame ee Cration dun data.frame e Rarrangements dun data.frame e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Cration dun data.frame e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Cration dun data.frame e
La fonction data.frame
Un objet de type data.frame peut tre cr par la fonction e ee data.frame() :
d <- data.frame(prise.avant, prise.apres) d 1 2 3 4 5 6 prise.avant prise.apres 5260 3910 5470 4220 5640 3885 6180 5160 6390 5645 6515 4680
Comme la classe data.frame hrite de la classe list, loprateur e e $ peut tre utilis pour extraire des colonnes. e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Cration dun data.frame e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Cration dun data.frame e
Si une seule ligne ou colonne est slectionne, elle est convertie en e e un vecteur. Ceci peut tre neutralis en ajoutant drop = FALSE e e
x[1, ] [1] 1 4 7 10 x[1, , drop = FALSE] [1,] [,1] [,2] [,3] [,4] 1 4 7 10
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Cration dun data.frame e
d[1:3, "prise.avant"] [1] 5260 5470 5640 d[d$prise.apres < 5000, 1, drop = FALSE] 1 2 3 6 prise.avant 5260 5470 5640 6515
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Rarrangements dun data.frame e
Plan dtaill e e
Data.frame Intrt des data.frame ee Cration dun data.frame e Rarrangements dun data.frame e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Data.frame Rarrangements dun data.frame e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Objets Fonctions Vecteurs Matrices et tableaux Facteurs Listes Data.frame Structures de contrle o
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Faire des choix
Plan dtaill e e
Structures de contrle o Faire des choix Rpter une action e e Boucles implicites
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Faire des choix
if(cond) expr
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Faire des choix
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Faire des choix
switch(expr, ...)
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Faire des choix
switch(expr, ...)
En travaillant avec une expression de type cha de caract`res on ne e peut prciser un choix par dfaut : e e
f <- function(chaine) { switch(chaine, un = 1, deux = 2, trois = 3, quatre = 4, "je ne sais pas") } f("un") [1] 1 f("deux") [1] 2 f("cent") [1] "je ne sais pas"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Faire des choix
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
Plan dtaill e e
Structures de contrle o Faire des choix Rpter une action e e Boucles implicites
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
replicate()
On est souvent amen ` faire des simulations pour apprcier la ea e distribution dchantillonnage dune statistique. La fonction e replicate() permet de le faire tr`s facilement : e
hist(replicate(500, mean(rnorm(100))), col = "lightblue")
Histogram of replicate(500, mean(rnorm(100)))
80 100 Frequency 0 20 40 60
0.3
0.2
0.1
0.0
0.1
0.2
0.3
replicate(500, mean(rnorm(100)))
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
for (carac in letters[1:5]) print(carac) [1] [1] [1] [1] [1] "a" "b" "c" "d" "e"
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
Approche sous
x <- rnorm(10) x[x < 0] <- -1 x
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
while(cond) expr
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
repeat expr
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
next
On peut sauter un tour dans une boucle. Par exemple pour mettre ` zro tous les lments dune matrice sauf les lments a e ee ee diagonaux :
(x <- matrix(rnorm(9), 3, 3)) [,1] [,2] [,3] [1,] 1.2478061 0.06974192 -0.1352661 [2,] 1.6225568 0.64071224 -0.5948983 [3,] 0.5394343 1.68095070 1.0463645 for (i in 1:3) { for (j in 1:3) { if (i == j) next x[i, j] <- 0 } } x [,1] [,2] [,3] [1,] 1.247806 0.0000000 0.000000 [2,] 0.000000 0.6407122 0.000000 [3,] 0.000000 0.0000000 1.046365
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Rpter une action e e
next
Remarque : sous
(x <- matrix(rnorm(9), 3, 3)) [,1] [,2] [,3] [1,] 1.146043 -0.2329530 -0.1141616 [2,] 1.040547 -1.6224200 1.9552784 [3,] 0.954766 -0.8191705 -1.0065945 (x <- diag(diag(x))) [,1] [,2] [,3] [1,] 1.146043 0.00000 0.000000 [2,] 0.000000 -1.62242 0.000000 [3,] 0.000000 0.00000 -1.006594
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
Plan dtaill e e
Structures de contrle o Faire des choix Rpter une action e e Boucles implicites
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
lapply()
lapply() permet dappliquer une fonction ` tous les lments a ee dune liste ou dun vecteur :
maliste <- as.list(1:3) f <- function(x) x^2 lapply(maliste, f) [[1]] [1] 1 [[2]] [1] 4 [[3]] [1] 9
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
lapply()
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
sapply()
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
tapply()
La fonction tapply() permet dappliquer une fonction ` des groupes a dnis par une variable qualitative : e
data(iris) head(iris) 1 2 3 4 5 6 Sepal.Length Sepal.Width Petal.Length Petal.Width Species 5.1 3.5 1.4 0.2 setosa 4.9 3.0 1.4 0.2 setosa 4.7 3.2 1.3 0.2 setosa 4.6 3.1 1.5 0.2 setosa 5.0 3.6 1.4 0.2 setosa 5.4 3.9 1.7 0.4 setosa setosa versicolor 5.006 5.936 virginica 6.588
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
apply()
apply() permet dappliquer une fonction aux lignes (1) ou aux colonnes (2) dune matrice :
(mat <- matrix(rpois(12, 2), 3, 4)) [1,] [2,] [3,] [,1] [,2] [,3] [,4] 1 2 3 3 3 3 3 1 0 1 2 2
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
apply()
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
apply()
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
apply()
Premi`re solution : ne garder que les individus enti`rement e e documents : e
head(airquality) 1 2 3 4 5 6 Ozone Solar.R Wind Temp Month Day 41 190 7.4 67 5 1 36 118 8.0 72 5 2 12 149 12.6 74 5 3 18 313 11.5 62 5 4 NA NA 14.3 56 5 5 28 NA 14.9 66 5 6 Ozone Solar.R Wind Temp Month Day 41 190 7.4 67 5 1 36 118 8.0 72 5 2 12 149 12.6 74 5 3 18 313 11.5 62 5 4 23 299 8.6 65 5 7 19 99 13.8 59 5 8
head(airquality[complete.cases(airquality), ]) 1 2 3 4 7 8
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
apply()
Deuxi`me solution : remplacer les valeurs manquantes par la e moyenne de la variable. Approche ` lancienne : a
for (i in 1:nrow(airquality)) { for (j in 1:ncol(airquality)) { if (is.na(airquality[i, j])) { airquality[i, j] <- mean(airquality[, j], na.rm = TRUE) } } } head(airquality) 1 2 3 4 5 6 Ozone 41.00000 36.00000 12.00000 18.00000 42.12931 28.00000 Solar.R 190.0000 118.0000 149.0000 313.0000 185.9315 185.9315 Wind Temp Month Day 7.4 67 5 1 8.0 72 5 2 12.6 74 5 3 11.5 62 5 4 14.3 56 5 5 14.9 66 5 6
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf
Logiciel R version 2.10.0 (2009-10-26) Compil le 2009-11-09 e Structures de contrle o Boucles implicites
apply()
Il est rare que lon ait besoin de faire des boucles explicites dans
http://pbil.univ-lyon1.fr/R/cours/lang03.pdf