R
- STID 1ère annéeR
est un langage scripté, de même que SQL
ou python
par exemple. Ceci implique que l’on peut exécuter des commandes en mode console, les unes après les autres. Mais il est aussi possible d’écrire un code dans un script et d’exécuter par la suite ce script.
Pour ce mode, les commandes sont toutes écrites dans la console. Dans celle-ci, on peut utiliser les flèches haut et bas pour naviguer dans l’historique des commandes.
1 + 2
(Entrée
pour valider)> 1 + 2
[1] 3
a = 1
, puis b = 2
, puis a + b
, puis a + B
> a = 1
> b = 2
> a + b
[1] 3
> a + B
Error in eval(expr, envir, enclos): objet 'B' introuvable
Ce mode permet d’écrire plusieurs commandes et de les exécuter en une seule fois. Il est utile de stocker les différentes commandes et commentaires associés, même si celles-ci sont exécutées les unes après les autres.
écrire les trois instructions suivantes
a = 1
b = 2
a + b
Run
Ctrl+Entrée
Run
trois foisCtrl+Entrée
trois foisSource
.r
(ou .R
)
tp1.r
) et de le mettre dans un répertoire dédié (par exemple Initiation à R
, lui même dans un répertoire Semestre 1
)source("tp1.r"")
dans la consoleDans un mode totalement script, l’idée est d’avoir un code qui s’exécute en une fois. Mais comme indiqué précédemment, il est également intéressant de pouvoir stocker dans un fichier l’ensemble des commandes qu’on a exécutées, soit pour réviser, soit pour pouvoir les ré-utiliser plus tard si nécessaire (ce qui arrive très souvent en entreprise).
Une fois les commandes exécutées (via mode console ou script exécuté), les variables a
et b
sont créées (cf panneau Environment) et utilisables (par ex. a * b
). Ces variables seront détruites lors de la fin de la session. Une autre moyen de les supprimer est d’utiliser la commande rm()
. Celle-ci est importante pour nettoyer l’espace de travail et ne pas utiliser trop d’espace (dans un environnement professionnel, sur serveur, il est nécessaire de faire attention à ce détail).
> v = "une variable"
> print(v)
[1] "une variable"
> rm(v)
> print(v)
Error in print(v): objet 'v' introuvable
Pour ajouter des commentaires (très important à mettre dans tout code informatique), il n’existe que le caractère #
à placer en début de ligne, ce qui donne par exemple
# Premières instructions
# (taper sur `Ctrl+Entrée` pour exécuter le code)
Nous allons voir quelques commandes classiques à connaître pour développer des codes R
.
Comme on l’a vu précédemment, si on exécute, dans la console ou en exécutant une ligne d’un script, une expression qui renvoie un résultat (par exemple le nom d’une variable ou un calcul), celui-ci s’affiche directement. Dans certains cas, et pour être certain que l’affichage se fasse, il est préférable de l’expliciter avec la commande print()
.
> print(a)
[1] 1
> print(a + b)
[1] 3
> print("bonjour")
[1] "bonjour"
Comme nous le verrons plus tard, R
manipule différents types de données, mais le premier à voir est le type vector
. Les variables a
et v
créées ci-dessus sont stockées comme des vector
s (ensemble indexé de valeurs de même type).
Les vecteurs les plus simples à créer sont les séquences de nombres. Les deux premières instructions renvoient le même vector : 1, 2, 3, 4, 5. La fonction seq(debut, fin)
permet de créer une séquence (croissante ou décroissante), à partir d’un nombre de départ et d’un nombre de fin. Sans précision, le pas est de \(1\) (ou \(-1\) si debut
> fin
). On peut aussi définir le pas (avec by =
) ou la longueur (avec length =
).
> 1:5
[1] 1 2 3 4 5
> seq(1, 5)
[1] 1 2 3 4 5
> seq(5, 1)
[1] 5 4 3 2 1
> seq(1, 5, by = .5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
> seq(5, 1, length = 3)
[1] 5 3 1
Si on veut combiner des valeurs qui ne constituent pas une séquence, il est possible de créer un vecteur avec la fonction c()
. Celle-ci prend toutes les valeurs en paramètres (sans limite spécifique) pour les mettre dans un même vector
. Si ceux-ci sont de types différents (par exemple, numérique et caractère), elle transforme les valeurs numériques en chaînes de caractères.
> c(1, 2, 5:7)
[1] 1 2 5 6 7
> c("FX", "Jollois")
[1] "FX" "Jollois"
> c(1, "trois")
[1] "1" "trois"
Une autre besoin est de créer un vecteur répétant un certain nombre de valeurs. Sans précision, la fonction rep(vec, nb)
répéte le vecteur vec
autant de fois qu’indiqué dans nb
. Si on veut répéter chaque valeur directement, on doit utiliser le paramètre each =
(cf 3ème exemple). Et on peut combiner les deux écritures pour répéter chaque valeur 3 fois, et le vecteur ainsi créé deux fois (4ème exemple).
> rep(5, 2)
[1] 5 5
> rep(1:5, 2)
[1] 1 2 3 4 5 1 2 3 4 5
> rep(1:5, each = 3)
[1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
> rep(1:5, 2, each = 3)
[1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
Pour concaténer deux chaînes (i.e. les regrouper en une seule), nous avons à disposition la fonction paste()
(et une version pré-paramétrée paste0()
). Cette fonction prend en paramètres des vecteurs de chaînes pour les concaténer. Si les valeurs ne sont pas des chaînes, elles sont autoamtiquement tranformées.
Par défaut, les chaînes sont séparées par un espace (cf exemple 1), mais il est possible de définir celui-ci via le paramètre sep =
(cf exemple 2 et 3). La fonction paste0()
est identique mais le séparateur par défaut est une chaîne vide (cf exemple 4).
> paste("bon", "jour")
[1] "bon jour"
> paste("bon", "jour", sep = "-")
[1] "bon-jour"
> paste("bon", "jour", sep = "")
[1] "bonjour"
> paste0("bon", "jour")
[1] "bonjour"
Si on souhaite concaténer deux vecteurs de tailles différentes, le vecteur le plus court est répéter autant de fois que nécessaire. Dans l’exemple 1 ci-dessous, le terme "bon"
est donc répéter 2 fois. Il faut donc faire attention à concaténer deux vecteurs cohérents en taille (cf exemple 2, 5 n’étant pas un multiple de 2).
> paste0("bon", c("jour", "soir"))
[1] "bonjour" "bonsoir"
> paste(c("x", "y"), 1:5, sep = "=")
[1] "x=1" "y=2" "x=3" "y=4" "x=5"
Enfin, on peut vouloir regrouper des valeurs d’un même vecteur dans une même chaîne. Pour cela, nous devons utiliser le paramètre collapse =
, comme dans l’exemple ci-dessous.
> paste(1:5, collapse = ",")
[1] "1,2,3,4,5"
Comme dans tous les langages, nous avons accès aux opérateurs mathématiques classiques, comme présenté ci-dessous.
> - 2
[1] -2
> 1 + 2
[1] 3
> 1 - 2
[1] -1
> 1 * 2
[1] 2
> 1 / 2
[1] 0.5
> (1 / 2) * (3 + 4)
[1] 3.5
> 2 ^ 3 # (puissance)
[1] 8
> 2 ** 3 # (puissance)
[1] 8
> sqrt(9) # (racine carrée)
[1] 3
Nous avons aussi accès à des fonctions telles que valeur absolue (abs()
), logarithme (log()
) et exponentielle (exp()
), et toutes les fonctions trigonométrique (avec cos()
, sin()
, tan()
, …).
> abs(-12) # (valeur absolue)
[1] 12
> log(2.718282) # (logarithme)
[1] 1
> exp(1) # (exponentielle)
[1] 2.718282
> cos(1) # (cosinus)
[1] 0.5403023
> sin(1) # (sinus)
[1] 0.841471
> tan(1) # (tangente)
[1] 1.557408
De la même manière, les opérateurs classiques de comparaison sont disponibles, comme présentés ci-dessous.
> a > 1
[1] FALSE
> a >= 1
[1] TRUE
> a < 1
[1] FALSE
> a <= 1
[1] TRUE
> a == 1
[1] TRUE
> a != 1
[1] FALSE
On dispose aussi de l’opérateur %in%
qui test si chaque valeur du premier vecteur est présent dans le deuxième vecteur. Il renvoie donc un vecteur de booléen (TRUE/FALSE
) indiquant si la valeur est dans le deuxième vecteur ou non.
> a %in% c(1, 3, 5)
[1] TRUE
> c(1, 3, 5) %in% a
[1] TRUE FALSE FALSE
Pour accéder à l’aide, il est possible d’utiliser les moyens suivants :
help(commande)
(par exemple, help(print)
)?commande
(?print
)help.search("terme(s)")
(par exemple, help.search("print")
)??terme
(par exemple, ??print
)Il existe des données déjà présentes dans le logiciel R
, soit de base, soit suite à l’ajout d’un package (dont on parlera plus tard). Pour avoir la liste des données, vous pouvez taper data()
. Pour avoir plus d’informations sur un jeu de données, il faut accéder à l’aide de celui-ci. Nous allons travailler ici sur le jeu de données mtcars
, qui contient les informations de 32 voitures sur 11 caractéristiques.
Pour voir le jeu de données en entier dans la console, vous devez juste exécuter son nom
> mtcars
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Vous pouvez aussi le voir dans RStudio à l’aide de la commande View(mtcars)
(à exécuter dans la console de préférence). Vous pouvez regarder l’aide du jeu de données, avec ?mtcars
par exemple, pour avoir plus d’informations sur ce jeu de données.
Les données de type table SQL
comme mtcars
sont stockées dans un format spécifique, data.frame
, comme permet de le confirmer la fonction class()
(qui renvoie le type de l’opbjet passé en paramètre).
> class(mtcars)
[1] "data.frame"
Sur un data.frame
, il est possible d’avoir les dimensions avec dim()
, qui sont le nombre de lignes (nrow()
) et le nombre de colonnes (ncol()
).
> dim(mtcars)
[1] 32 11
> nrow(mtcars)
[1] 32
> ncol(mtcars)
[1] 11
Un data.frame
contient des noms de colonnes (dits aussi d’attributs), qu’on peut obtenir avec les fonctions names()
ou colnames()
. Il contient parfois aussi des noms de lignes (qui sont des identifiants), accessibles avec rownames()
. Si ce n’est pas le cas, la fonction renvoie une séquence de type 1:nrow(obj)
. Enfin, la fonction str()
renvoie un résumé de la table sous la forme d’une liste avec un item par variable, contenant le nom de celle-ci, son type et les premières valeurs.
> names(mtcars)
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
[11] "carb"
> colnames(mtcars)
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
[11] "carb"
> rownames(mtcars)
[1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710"
[4] "Hornet 4 Drive" "Hornet Sportabout" "Valiant"
[7] "Duster 360" "Merc 240D" "Merc 230"
[10] "Merc 280" "Merc 280C" "Merc 450SE"
[13] "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood"
[16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128"
[19] "Honda Civic" "Toyota Corolla" "Toyota Corona"
[22] "Dodge Challenger" "AMC Javelin" "Camaro Z28"
[25] "Pontiac Firebird" "Fiat X1-9" "Porsche 914-2"
[28] "Lotus Europa" "Ford Pantera L" "Ferrari Dino"
[31] "Maserati Bora" "Volvo 142E"
> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Lorsque les données sont grandes, il est souvent utile d’avoir un aperçu des premières lignes. La fonction head()
renvoie par défaut les 6 premières lignes d’une table passée en paramètre. On peut aussi lui spécifier le nombre de lignes qu’on désire. La fonction tail()
fonctionne de manière identique, mais renvoie les dernières lignes de la table.
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
> head(mtcars, 3)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
> tail(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.6 1 1 4 2
> tail(mtcars, 3)
mpg cyl disp hp drat wt qsec vs am gear carb
Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6
Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 8
Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2
Pour récupérer les valeurs d’une colonne de la table, nous avons 4 façons différentes de le faire, comme présenté ci-dessous. Il faut noter que les trois premières lignes renvoient un vecteur, alors que la dernière renvoie une table (data.frame
) réduite. Vous remarquerez qu’on peut spécifier soit le nom de la variable, soit sa position dans le data.frame
.
> mtcars$mpg
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2
[15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4
[29] 15.8 19.7 15.0 21.4
> mtcars[,"mpg"]
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2
[15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4
[29] 15.8 19.7 15.0 21.4
> mtcars[,1]
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2
[15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4
[29] 15.8 19.7 15.0 21.4
> mtcars["mpg"]
mpg
Mazda RX4 21.0
Mazda RX4 Wag 21.0
Datsun 710 22.8
Hornet 4 Drive 21.4
Hornet Sportabout 18.7
Valiant 18.1
Duster 360 14.3
Merc 240D 24.4
Merc 230 22.8
Merc 280 19.2
Merc 280C 17.8
Merc 450SE 16.4
Merc 450SL 17.3
Merc 450SLC 15.2
Cadillac Fleetwood 10.4
Lincoln Continental 10.4
Chrysler Imperial 14.7
Fiat 128 32.4
Honda Civic 30.4
Toyota Corolla 33.9
Toyota Corona 21.5
Dodge Challenger 15.5
AMC Javelin 15.2
Camaro Z28 13.3
Pontiac Firebird 19.2
Fiat X1-9 27.3
Porsche 914-2 26.0
Lotus Europa 30.4
Ford Pantera L 15.8
Ferrari Dino 19.7
Maserati Bora 15.0
Volvo 142E 21.4
Il est bien évidemment possible de récupérer plusieurs colonnes en une seule étape. Pour ceci, de manière similaire à précédemment, nous avons trois possibilités (le $
n’est plus utilisable dans ce cas). Ces trois exemples renvoient exactement le même résultat. C’est une façon de faire une projection comme en SQL
.
> mtcars[c("mpg", "hp")]
mpg hp
Mazda RX4 21.0 110
Mazda RX4 Wag 21.0 110
Datsun 710 22.8 93
Hornet 4 Drive 21.4 110
Hornet Sportabout 18.7 175
Valiant 18.1 105
Duster 360 14.3 245
Merc 240D 24.4 62
Merc 230 22.8 95
Merc 280 19.2 123
Merc 280C 17.8 123
Merc 450SE 16.4 180
Merc 450SL 17.3 180
Merc 450SLC 15.2 180
Cadillac Fleetwood 10.4 205
Lincoln Continental 10.4 215
Chrysler Imperial 14.7 230
Fiat 128 32.4 66
Honda Civic 30.4 52
Toyota Corolla 33.9 65
Toyota Corona 21.5 97
Dodge Challenger 15.5 150
AMC Javelin 15.2 150
Camaro Z28 13.3 245
Pontiac Firebird 19.2 175
Fiat X1-9 27.3 66
Porsche 914-2 26.0 91
Lotus Europa 30.4 113
Ford Pantera L 15.8 264
Ferrari Dino 19.7 175
Maserati Bora 15.0 335
Volvo 142E 21.4 109
> mtcars[,c("mpg", "hp")]
mpg hp
Mazda RX4 21.0 110
Mazda RX4 Wag 21.0 110
Datsun 710 22.8 93
Hornet 4 Drive 21.4 110
Hornet Sportabout 18.7 175
Valiant 18.1 105
Duster 360 14.3 245
Merc 240D 24.4 62
Merc 230 22.8 95
Merc 280 19.2 123
Merc 280C 17.8 123
Merc 450SE 16.4 180
Merc 450SL 17.3 180
Merc 450SLC 15.2 180
Cadillac Fleetwood 10.4 205
Lincoln Continental 10.4 215
Chrysler Imperial 14.7 230
Fiat 128 32.4 66
Honda Civic 30.4 52
Toyota Corolla 33.9 65
Toyota Corona 21.5 97
Dodge Challenger 15.5 150
AMC Javelin 15.2 150
Camaro Z28 13.3 245
Pontiac Firebird 19.2 175
Fiat X1-9 27.3 66
Porsche 914-2 26.0 91
Lotus Europa 30.4 113
Ford Pantera L 15.8 264
Ferrari Dino 19.7 175
Maserati Bora 15.0 335
Volvo 142E 21.4 109
> mtcars[,c(1, 4)]
mpg hp
Mazda RX4 21.0 110
Mazda RX4 Wag 21.0 110
Datsun 710 22.8 93
Hornet 4 Drive 21.4 110
Hornet Sportabout 18.7 175
Valiant 18.1 105
Duster 360 14.3 245
Merc 240D 24.4 62
Merc 230 22.8 95
Merc 280 19.2 123
Merc 280C 17.8 123
Merc 450SE 16.4 180
Merc 450SL 17.3 180
Merc 450SLC 15.2 180
Cadillac Fleetwood 10.4 205
Lincoln Continental 10.4 215
Chrysler Imperial 14.7 230
Fiat 128 32.4 66
Honda Civic 30.4 52
Toyota Corolla 33.9 65
Toyota Corona 21.5 97
Dodge Challenger 15.5 150
AMC Javelin 15.2 150
Camaro Z28 13.3 245
Pontiac Firebird 19.2 175
Fiat X1-9 27.3 66
Porsche 914-2 26.0 91
Lotus Europa 30.4 113
Ford Pantera L 15.8 264
Ferrari Dino 19.7 175
Maserati Bora 15.0 335
Volvo 142E 21.4 109
De manière similaire, il est possible de récupérer une ligne spécifique, voire plusieurs lignes, en précisant soit sa position, soit son identifiant.
> mtcars[1,]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
> mtcars["Mazda RX4",]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
> mtcars[c(1, 3, 4),]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
> mtcars[c("Mazda RX4", "Datsun 710", "Hornet 4 Drive"),]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Il est aussi possible de passer un vecteur de booléen, nous permettant de sélectionner des lignes qui respectent une condition (simple ou complexe). C’est une façon de faire une restriction comme en SQL
.
> mtcars[mtcars$mpg < 15,]
mpg cyl disp hp drat wt qsec vs am gear carb
Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4
> mtcars[mtcars$mpg < 15 & mtcars$qsec < 16,]
mpg cyl disp hp drat wt qsec vs am gear carb
Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
En combinant les deux opérations ci-dessus, il est possible d’obtenir le contenu d’une cellule (exemple 1), ou de plusieurs cellules (exemple 2 à 5).
> mtcars[1,1]
[1] 21
> mtcars[1:5, 1]
[1] 21.0 21.0 22.8 21.4 18.7
> mtcars[1, 1:3]
mpg cyl disp
Mazda RX4 21 6 160
> mtcars[1:5,1:3]
mpg cyl disp
Mazda RX4 21.0 6 160
Mazda RX4 Wag 21.0 6 160
Datsun 710 22.8 4 108
Hornet 4 Drive 21.4 6 258
Hornet Sportabout 18.7 8 360
> mtcars[mtcars$mpg < 15 & mtcars$qsec < 16, c("hp", "disp")]
hp disp
Duster 360 245 360
Camaro Z28 245 350
Créer un vecteur v1
qui va de \(1\) à \(-1\) par pas de \(-0.25\)
Créer un vecteur v2
qui va de \(0\) à \(100\) d’une longueur de \(23\)
Créer un vecteur v3
qui contient les chaînes : "1ère année"
, "2ème année"
, "LP"
Créer un vecteur v4
qui répéte trois fois la chaîne "promo"
Regrouper les vecteurs v3
et v4
, pour avoir le vecteur v5
suivant
[1] "promo=1ère année" "promo=2ème année" "promo=LP"
v6
suivant[1] "promo='1ère année'" "promo='2ème année'" "promo='LP'"
v7
qui suit à l’aide des fonctions c()
, seq()
, paste()
, rep()
[1] "x1" "y1" "x2" "y2" "x3" "y3" "x4" "y4"
Sur le jeu de données swiss
Donner le nombre de lignes et le nombre de colonnes, séparemment
Afficher les noms de variables
Afficher les 10 premières lignes
Afficher les colonnes Agriculture
et Education
, en data.frame
Afficher les lignes pour lesquelles la variable Infant.Mortality
est inférieure à 17
Combiner les deux demandes précédentes