Chapter 14 Exemples d’utilisation de for
.
14.1 La boucle for
simple
Dans l’exemple suivant, chaque instance de m
est remplacée par chaque nombre entre 1
et 7
, jusqu’à atteindre le dernier élément de la séquence :
<- 2
y for (m in 1:6) {
print(y * m)
}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 12
14.2 Boucles for
sur différentes classes
Comme prévu, vous pouvez utiliser les boucles for()
dans différents types d’objets et classes, comme une list
. Prenons l’exemple ci-dessous, où nous créons la liste d’objets elements
:
<- list(a = 1:3, b = 4:10, c = 7:-1)) (elements
## $a
## [1] 1 2 3
##
## $b
## [1] 4 5 6 7 8 9 10
##
## $c
## [1] 7 6 5 4 3 2 1 0 -1
Maintenant, nous allons imprimmer (print
) le double de chaque élément de la liste :
for (element in elements) {
print(element * 2)
}
## [1] 2 4 6
## [1] 8 10 12 14 16 18 20
## [1] 14 12 10 8 6 4 2 0 -2
14.3 for
et if
ensemble
Effectuons des opérations pour les éléments pairs dans x
en utilisant l’opérateur modulo (%%
) :
<- c(2, 5, 3, 9, 6)
x <- 0 count
for (val in x) {
if (val%%2 == 0) {
<- count + 1
count
}
}print(count)
## [1] 2
L’exemple ci-dessus peut être représenté dans l’organigramme suivant :
14.4 for
avec un jeu de données réel
Les boucles for()
sont souvent utilisées pour boucler sur un jeu de données. Nous allons utiliser les boucles pour exécuter des fonctions sur le jeu de données CO2
qui est construit dans R
. Pour charger et voir les 6 premières lignes de la base de données CO2
, exécutez le code suivant :
data(CO2) # Cela charge le jeu de données intégré
head(CO2)
## Plant Type Treatment
## 1 Qn1 Quebec nonchilled
## 2 Qn1 Quebec nonchilled
## 3 Qn1 Quebec nonchilled
## 4 Qn1 Quebec nonchilled
## 5 Qn1 Quebec nonchilled
## 6 Qn1 Quebec nonchilled
## conc uptake
## 1 95 16.0
## 2 175 30.4
## 3 250 34.8
## 4 350 37.2
## 5 500 35.3
## 6 675 39.2
Now, to recursively print the CO2 concentration, let us do this:
for (i in 1:length(CO2[, 1])) {
# pour chaque ligne de l'ensemble de données sur le CO2
print(CO2$conc[i]) # imprimer la concentration de CO2
}
Voici les 40 premières réponses :
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
Maintenant, obtenons la concentration de CO2 uniquement pour les sites qui ont été échantillonnés au Québec (Canada) :
for (i in 1:length(CO2[, 1])) {
# for each row in the CO2 dataset if the type is
# 'Quebec'
if (CO2$Type[i] == "Quebec") {
print(CO2$conc[i]) # print the CO2 concentration
} }
for (i in 1:length(CO2[, 1])) {
# for each row in the CO2 dataset if the type is
# 'Quebec'
if (CO2$Type[i] == "Quebec") {
print(CO2$conc[i]) # print the CO2 concentration
} }
Here they are:
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
## [1] 95
## [1] 175
## [1] 250
## [1] 350
## [1] 500
## [1] 675
## [1] 1000
Indice 1. Pour boucler sur le nombre de lignes d’un cadre de données, nous pouvons utiliser la fonction nrow()
:
for (i in 1:nrow(CO2)) {
# pour chaque ligne dans l'ensemble de données sur le
# CO2
print(CO2$conc[i])
# imprimer la concentration de CO2 concentration de CO2
}
Indice 2. Pour effectuer des opérations sur les éléments d’une colonne, nous pouvons directement itérer sur celle-ci.
for (p in CO2$conc) {
# pour chaque élément de la colonne 'conc' de le CO2 df
print(p)
# affiche le p-ième élément
}
Indice 3. L’expression à l’intérieur de la boucle peut être presque n’importe quoi et est généralement une instruction composée contenant plusieurs commandes.
for (i in 4:5) {
# pour i entre 4 et 5
print(colnames(CO2)[i])
print(mean(CO2[, i])) # imprime la moyenne de cette colonne à partir de l'ensemble de données sur le CO2
}