Chapter 13 Exemples d’utilisation de for.

13.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 :

y <- 2
for (m in 1:6) {
    print(y * m)
}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 12

13.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:

(elements <- list(a = 1:3, b = 4:10, c = 7:-1))
## $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

13.3 for et if ensemble

Effectuons des opérations pour les éléments pairs dans x en utilisant l’opérateur modulo (%%) :

x <- c(2, 5, 3, 9, 6)
count <- 0
for (val in x) {
    if (val%%2 == 0) {
        count <- count + 1
    }
}
print(count)
## [1] 2

L’exemple ci-dessus peut être représenté dans l’organigramme suivant :

13.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
}