Accéder au contenu principal

Boucles for en R

Quand vous savez combien de fois vous souhaitez répéter une action, la boucle for est une bonne option. Maîtrisez les boucles for avec ce tutoriel.
Actualisé 19 sept. 2026  · 5 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity


Maîtrisez les boucles for et d’autres fonctions essentielles de R avec notre cours d’introduction à R.

Parcourir un vecteur avec une boucle

Quand vous savez combien de fois vous souhaitez répéter une action, une boucle for est une bonne option. L’idée d’une boucle for est d’avancer pas à pas dans une séquence et d’exécuter une action à chaque étape. Cette séquence est souvent un vecteur de nombres (comme la séquence 1:10), mais il peut aussi s’agir de nombres dans un ordre quelconque comme c(2, 5, 4, 6), voire d’une séquence de caractères !

for (value in sequence) {
    code
}

En clair : « pour chaque valeur de ma séquence, exécute ce code. » Par exemple : « pour chaque ligne de mon data frame, affiche la colonne 1 », ou « pour chaque mot de ma phrase, vérifie si ce mot est DataCamp. »

Essayons ! Vous allez d’abord créer une boucle qui affiche les valeurs d’une séquence de 1 à 10. Puis vous modifierez cette boucle pour additionner les valeurs de 1 à 10 : à chaque itération, la valeur suivante est ajoutée à la somme courante.

Instructions

Un vecteur seq a été créé pour vous. Complétez la boucle for en utilisant seq comme séquence. Affichez value à chaque itération. Une variable sum a aussi été créée. Utilisez la boucle pour additionner les nombres de seq. À chaque itération, ajoutez value à sum, puis affichez sum.

eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiIsInNh bXBsZSI6IlxuIyBTZXF1ZW5jZVxuICAgICAgICAgc2VxIDwtIGMoMToxMClcblxuICAgICAgICAgIyBQcmludCBsb29wXG4gICAgICAgICBmb3IgKHZhbHVlIGluIF9fXykge1xuICAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICB9XG5cbiAgICAgICAgICAjIEEgc3VtIHZhcmlhYmxlXG4gICAgICAgICAgc3VtIDwtIDBcblxuICAgICAgICAgICMgU3VtIGxvb3BcbiAgICAgICAgICBmb3IgKHZhbHVlIGluIHNlcSkge1xuICAgICAgICAgIHN1bSA8LSBfX18gKyBfX19cbiAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICAgfSIsInNvbHV0aW9uIjoiXG4jIFNlcXVlbmNlXG4gICAgICAgICAgc2VxIDwtIGMoMToxMClcblxuICAgICAgICAgICMgUHJpbnQgbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHByaW50KHZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgICMgQSBzdW0gdmFyaWFibGVcbiAgICAgICAgICBzdW0gPC0gMFxuXG4gICAgICAgICAgIyBTdW0gbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHN1bSA8LSBzdW0gKyB2YWx1ZVxuICAgICAgICAgICAgICBwcmludChzdW0pXG4gICAgICAgICAgfSIsInNjdCI6IlxudGVzdF9wcmVkZWZpbmVkX29iamVjdHMoXCJzZXFcIilcblxuICAgICAgICAgIHRlc3RfZm9yX2xvb3AoY29uZF90ZXN0ID0gdGVzdF9zdHVkZW50X3R5cGVkKFwidmFsdWUgaW4gc2VxXCIpLFxuICAgICAgICAgICAgICAgICAgZXhwcl90ZXN0ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksXG4gICAgICAgICAgICAgICAgICBpbmRleCA9IDEpXG5cbiAgICAgICAgICB0ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChcInZhbHVlIGluIHNlcVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2NvcnJlY3QodGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksIHsgIyBJZiB0aGUgcHJpbnQgc3RhdGVtZW50IGlzIHdyb25nLCB0aGVuIGNoZWNrIHRoZSBhc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9vcih0ZXN0X3N0dWRlbnRfdHlwZWQoXCJzdW0gKyB2YWx1ZVwiKSwgIyBEaWQgdGhleSBhc3NpZ24gdGhpcyBjb3JyZWN0bHk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3N0dWRlbnRfdHlwZWQoXCJ2YWx1ZSArIHN1bVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IDIpXG5cbiAgICAgICAgICAgIHN1Y2Nlc3NfbXNnKFwiR3JlYXQgam9iISBMZXQncyBzZWUgd2hhdCBlbHNlIHlvdSBjYW4gZG8gd2l0aCBmb3IgbG9vcHMuXCIpIiwiaGludCI6IlxuLSBJbiB0aGUgZmlyc3QgbG9vcCwgcmVtZW1iZXIgd2hhdCB5b3VyIHNlcXVlbmNlIHNob3VsZCBiZS5cbiAgICAgICAgICAgICAgICAgIC0gSW4gdGhlIHNlY29uZCBsb29wLCB5b3UgaGF2ZSB0byBhZGQgYHZhbHVlYCB0byBgc3VtYCBhbmQgdGhlbiBhc3NpZ24gdGhhdCB2YWx1ZSBiYWNrIHRvIGBzdW1gLiJ9

Si tout est clair, passez à l’exercice suivant ! Sinon, voici une vidéo récapitulative.

Vidéo d’ensemble sur les boucles for en R

Parcourir les lignes d’un data frame

Imaginez que vous vous intéressiez aux jours où le cours d’Apple dépasse 117. S’il passe au-dessus, vous voulez afficher la date du jour concerné et le cours de l’action. Si vous avez un data frame stock avec une colonne date et une colonne de prix apple, pouvez-vous parcourir les lignes pour y parvenir ? Bien sûr !

Avant cela, notez que vous pouvez obtenir le nombre de lignes de votre data frame avec nrow(stock). Vous pouvez ensuite créer une séquence à parcourir avec 1:nrow(stock).

for (row in 1:nrow(stock)) {
    price <- stock[row, "apple"]
    date  <- stock[row, "date"]

    if(price > 117) {
        print(paste("On", date,
                    "the stock price was", price))
    }
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"

Cela mobilise plusieurs notions vues jusqu’ici : instructions if, sous-ensembles de vecteurs, conditions et boucles ! Bravo pour vos progrès !

Instructions

stock est disponible dans votre environnement.

Complétez la boucle for pour que ce qui suit soit vrai :

  • price doit contenir le prix à l’itération courante
  • date doit contenir la date à l’itération courante
  • Cette fois, vous voulez savoir si apple dépasse 116.
  • Si c’est le cas, affichez date et price.
  • Si c’est en dessous de 116, affichez la date et indiquez que ce n’était pas un jour important !
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr IDwtIGRhdGEuZnJhbWUoXG4gICAgICAgICAgICAgIGRhdGUgPSBhcy5EYXRlKGMoXCIyMDE2LTEyLTAxXCIsIFwiMjAxNi0xMi0wMlwiLCBcIjIwMTYtMTItMDNcIiwgXCIyMDE2LTEyLTA0XCIsIFwiMjAxNi0xMi0wNVwiLCBcIjIwMTYtMTItMDZcIiwgXCIyMDE2LTEyLTA3XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0wOFwiLCBcIjIwMTYtMTItMDlcIiwgXCIyMDE2LTEyLTEwXCIsIFwiMjAxNi0xMi0xMVwiLCBcIjIwMTYtMTItMTJcIiwgXCIyMDE2LTEyLTEzXCIsIFwiMjAxNi0xMi0xNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDE2LTEyLTE1XCIsIFwiMjAxNi0xMi0xNlwiLCBcIjIwMTYtMTItMTdcIiwgXCIyMDE2LTEyLTE4XCIsIFwiMjAxNi0xMi0xOVwiLCBcIjIwMTYtMTItMjBcIiwgXCIyMDE2LTEyLTIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0yMlwiLCBcIjIwMTYtMTItMjNcIiwgXCIyMDE2LTEyLTI0XCIsIFwiMjAxNi0xMi0yNVwiLCBcIjIwMTYtMTItMjdcIiwgXCIyMDE2LTEyLTI4XCIsIFwiMjAxNi0xMi0yOVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDE2LTEyLTMwXCIpKSxcblxuICAgICAgICAgICAgICBhcHBsZSA9IGMoMTA5LjQ5LCAxMDkuOTAsIE5BLCBOQSwgMTA5LjExLCAxMDkuOTUsIDExMS4wMywgMTEyLjEyLCAxMTMuOTUsIE5BLCBOQSwgMTEzLjMwLCAxMTUuMTksXG4gICAgICAgICAgICAgICAgICAgICAgICAxMTUuMTksIDExNS44MiwgMTE1Ljk3LCBOQSwgTkEsIDExNi42NCwgMTE2Ljk1LCAxMTcuMDYsIDExNi4yOSwgMTE2LjUyLCBOQSwgTkEsIDExNy4yNixcbiAgICAgICAgICAgICAgICAgICAgICAgIDExNi43NiwgMTE2LjczLCAxMTUuODIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHN0b2NrIDwtIHN1YnNldChzdG9jaywgIWlzLm5hKGFwcGxlKSk","sample":"\n# Loop over stock rows\n for (row in 1:___) {\n price <- stock[___, \"___\"]\n date <- stock[___, \"___\"]\n\n if(___ > ___) {\n print(paste(\"On\", ___,\n \"the stock price was\", ___))\n } else {\n print(paste(\"The date:, ___,\n \"is not an important day!\"))\n }\n }","solution":"\n# Loop over stock rows\n for (row in 1:nrow(stock)) {\n price <- stock[row, \"apple\"]\n date <- stock[row, \"date\"]\n\n if(price > 116) {\n print(paste(\"On\", date,\n \"the stock price was\", price))\n } else {\n print(paste(\"The date:\", date,\n \"is not an important day!\"))\n }\n }","sct":"\ntest_predefined_objects(\"stock\")\n\n test_for_loop(cond_test = test_student_typed(\"row in 1:nrow(stock)\"),\n expr_test = test_if_else(if_cond_test = test_student_typed(\"price > 116\"),\n if_expr_test = test_function(\"print\", args = \"x\", incorrect_msg = \"The print statement output is incorrect, are `date` and `price` defined correctly?\"),\n\n else_expr_test = test_function(\"print\", args = \"x\"))\n )\n\n success_msg(\"Nice job!\")","hint":"\n- The blanks you fill in should be similar to the example.\n - For the else statement blanks, you need to select the `date` for the current row."}

Parcourir les éléments d’une matrice

Jusqu’ici, vous avez itéré sur des types de données à une dimension. Si vous souhaitez parcourir les éléments d’une matrice (colonnes et lignes), vous devrez utiliser des boucles imbriquées. Vous allez appliquer ce principe pour afficher les corrélations entre trois actions.

Le plus simple est d’imaginer que vous commencez à la ligne 1, puis vous vous déplacez vers la droite : col1, col2, … jusqu’à la dernière colonne de la ligne 1. Ensuite, vous descendez à la ligne 2 et vous répétez.

my_matrix
     [,1]   [,2]  
[1,] "r1c1" "r1c2"
[2,] "r2c1" "r2c2"

# Loop over my_matrix
for(row in 1:nrow(my_matrix)) {
    for(col in 1:ncol(my_matrix)) {
        print(my_matrix[row, col])
    }
}
[1] "r1c1"
[1] "r1c2"
[1] "r2c1"
[1] "r2c2"

Instructions

La matrice de corrélation corr est disponible dans votre environnement.

  • Affichez corr pour avoir un aperçu des données.
  • Complétez la boucle imbriquée ! Elle doit respecter les points suivants :
    • La boucle externe doit parcourir les row de corr.
    • La boucle interne doit parcourir les col de corr.
    • L’instruction d’affichage doit imprimer les noms de la colonne et de la ligne courantes, ainsi que leur corrélation.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr cyA8LSBjKFwiYXBwbGVcIiwgXCJpYm1cIiwgXCJtaWNyXCIpXG4gICAgICAgIGNvcnIgPC0gbWF0cml4KGMoMSwgLjk2LCAuODgsIC45NiwgMSwgLjc0LCAuODgsIC43NCwgMSksIG5yb3c9MylcblxuICAgICAgICBjb2xuYW1lcyhjb3JyKSA8LSBzdG9ja3NcbiAgICAgICAgcm93bmFtZXMoY29ycikgPC0gc3RvY2tzIiwic2FtcGxlIjoiXG4gICMgUHJpbnQgb3V0IGNvcnJcblxuXG4gICAgICAgICMgQ3JlYXRlIGEgbmVzdGVkIGxvb3BcbiAgICAgICAgZm9yKHJvdyBpbiAxOm5yb3coX19fKSkge1xuICAgICAgICAgICAgZm9yKGNvbCBpbiAxOl9fXyhjb3JyKSkge1xuICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKGNvbG5hbWVzKGNvcnIpW19fX10sIFwiYW5kXCIsIHJvd25hbWVzKGNvcnIpW19fX10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRpb24gb2ZcIiwgY29ycltyb3csY29sXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0iLCJzb2x1dGlvbiI6IlxuICAjIFByaW50IG91dCBjb3JyXG4gICAgICAgICAgY29yclxuXG4gICAgICAgICAgIyBDcmVhdGUgYSBuZXN0ZWQgbG9vcFxuICAgICAgICAgIGZvcihyb3cgaW4gMTpucm93KGNvcnIpKSB7XG4gICAgICAgICAgICAgIGZvcihjb2wgaW4gMTpuY29sKGNvcnIpKSB7XG4gICAgICAgICAgICAgICAgICBwcmludChwYXN0ZShjb2xuYW1lcyhjb3JyKVtjb2xdLCBcImFuZFwiLCByb3duYW1lcyhjb3JyKVtyb3ddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRpb24gb2ZcIiwgY29ycltyb3csY29sXSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9Iiwic2N0IjoiXG50ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChcInJvdyBpbiAxOm5yb3coY29ycilcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCAgID0gdGVzdF9zdHVkZW50X3R5cGVkKFwiY29sIGluIDE6bmNvbChjb3JyKVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGVzdCAgID0gdGVzdF9mdW5jdGlvbigicHJpbnQiLCBhcmdzID0gXCJ4XCIsIGluY29ycmVjdF9tc2cgPSBcIlRoZSBwcmludCBzdGF0ZW1lbnQgb3V0cHV0IGlzIGluY29ycmVjdCwgZGlkIHlvdSBmaWxsIGluIGBjb2xgIGFuZCBgcm93YCBmb3IgdGhlIGJsYW5rcz9cIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICBzdWNjZXNzX21zZyhcIk5pY2UhIFRoYXQgd2FzIGEgdG91Z2ggb25lLiBOZXN0ZWQgbG9vcHMgcmVxdWlyZSBhIGxvdCBvZiBjb21wdXRhdGlvbmFsIGVuZXJneSwgYmVjYXVzZSBzbyBtYW55IGNhbGN1bGF0aW9ucyBhcmUgcmVxdWlyZWQuXCIpIiwiaGludCI6IlxuICAtIERvbid0IGZvcmdldCB0byB1c2UgdGhlIGBucm93KClgIGFuZCBgbmNvbCgpYCBmdW5jdGlvbnMgaW4geW91ciBsb29wLlxuICAgICAgICAgICAgICAgICAgLSBUaGUgY29kZSB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsb29wIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZXhhbXBsZS4ifQ==

Consultez aussi notre tutoriel sur les boucles en R.

Sujets
R
Science des données

En savoir plus sur R

Cours

R niveau intermédiaire

6 h
676.2K
Poursuivez votre parcours pour devenir un ninja de R en vous familiarisant avec les instructions conditionnelles, les boucles et les fonctions vectorielles.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow