Pular para o conteúdo principal

Loops for em R

Quando você já sabe quantas vezes quer repetir uma ação, um loop for é uma ótima opção. Domine loops for com este tutorial.
Atualizado 17 de set. de 2026  · 5 min lido

Explorar com IA

ChatGPTClaudePerplexity


Domine loops for e outras funções essenciais de R com o nosso curso de introdução ao R.

Percorrer um vetor

Quando você já sabe quantas vezes quer repetir uma ação, um loop for é uma ótima opção. A ideia do loop for é percorrer uma sequência, um elemento por vez, executando uma ação a cada passo. Essa sequência geralmente é um vetor de números (como a sequência de 1:10), mas também pode ser uma lista de números fora de ordem, como c(2, 5, 4, 6), ou até uma sequência de caracteres!

for (value in sequence) {
    code
}

Em outras palavras: "para cada valor na minha sequência, execute este código". Exemplos: "para cada linha do meu data frame, imprima a coluna 1" ou "para cada palavra da minha frase, verifique se essa palavra é DataCamp".

Vamos a um exemplo! Primeiro, você vai criar um loop que imprime os valores de uma sequência de 1 a 10. Depois, vai modificar esse loop para também somar os valores de 1 a 10, em que a cada iteração o próximo valor da sequência é adicionado ao somatório parcial.

Instruções

Um vetor seq já foi criado para você. Complete o loop for usando seq como sequência. Imprima value a cada iteração. A variável sum também foi criada para você. Use o loop para somar os números de seq. A cada iteração, value deve ser somado a sum e, em seguida, sum deve ser impresso.

eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiIsInNh bXBsZSI6IlxuIyBTZXF1ZW5jZVxuICAgICAgICAgc2VxIDwtIGMoMToxMClc blxuICAgICAgICAgIyBQcmludCBsb29wXG4gICAgICAgICBmb3IgKHZhbHVl IGluIF9fXykge1xuICAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICB9 XG5cbiAgICAgICAgICAjIEEgc3VtIHZhcmlhYmxlXG4gICAgICAgICAgc3Vt IDwtIDBcblxuICAgICAgICAgICMgU3VtIGxvb3BcbiAgICAgICAgICBmb3IgKHZhbHVlIGluIHNlcSkge1xuICAgICAgICAgIHN1bSA8LSBfX18gKyBfX19c biAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICAgfSIsInNvbHV0aW9u IjoiXG4jIFNlcXVlbmNlXG4gICAgICAgICAgc2VxIDwtIGMoMToxMClcblxu ICAgICAgICAgICMgUHJpbnQgbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUg aW4gc2VxKSB7XG4gICAgICAgICAgICAgIHByaW50KHZhbHVlKVxuICAgICAg ICAgIH1cblxuICAgICAgICAgICMgQSBzdW0gdmFyaWFibGVcbiAgICAgICAg ICBzdW0gPC0gMFxuXG4gICAgICAgICAgIyBTdW0gbG9vcFxuICAgICAgICAg IGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHN1bSA8LSBz dW0gKyB2YWx1ZVxuICAgICAgICAgICAgICBwcmludChzdW0pXG4gICAgICAg ICAgfSIsInNjdCI6IlxudGVzdF9wcmVkZWZpbmVkX29iamVjdHMoXCJzZXFc IilcblxuICAgICAgICAgIHRlc3RfZm9yX2xvb3AoY29uZF90ZXN0ID0gdGVz dF9zdHVkZW50X3R5cGVkKFwidmFsdWUgaW4gc2VxXCIpLFxuICAgICAgICAg ICAgICAgICAgZXhwcl90ZXN0ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksXG4gICAgICAgICAgICAgICAgICBpbmRleCA9IDEpXG5cbiAgICAgICAgICB0ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChcInZhbHVlIGluIHNlcVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2NvcnJlY3QodGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksIHsgIyBJZiB0aGUgcHJpbnQgc3RhdGVtZW50IGlzIHdyb25nLCB0aGVuIGNoZWNrIHRoZSBhc3NpZ25t ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGVzdF9vcih0ZXN0X3N0dWRlbnRfdHlwZWQoXCJzdW0gKyB2YWx1ZVwiKSwg IyBEaWQgdGhleSBhc3NpZ24gdGhpcyBjb3JyZWN0bHk/XG4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3N0 dWRlbnRfdHlwZWQoXCJ2YWx1ZSArIHN1bVwiKVxuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAg ICAgICAgICAgICAgICBpbmRleCA9IDIpXG5cbiAgICAgICAgICAgIHN1Y2Nl c3NfbXNnKFwiR3JlYXQgam9iISBMZXQncyBzZWUgd2hhdCBlbHNlIHlvdSBj YW4gZG8gd2l0aCBmb3IgbG9vcHMuXCIpIiwiaGludCI6IlxuLSBJbiB0aGUg Zmlyc3QgbG9vcCwgcmVtZW1iZXIgd2hhdCB5b3VyIHNlcXVlbmNlIHNob3Vs ZCBiZS5cbiAgICAgICAgICAgICAgICAgIC0gSW4gdGhlIHNlY29uZCBsb29w LCB5b3UgaGF2ZSB0byBhZGQgYHZhbHVlYCB0byBgc3VtYCBhbmQgdGhlbiBh c3NpZ24gdGhhdCB2YWx1ZSBiYWNrIHRvIGBzdW1gLiJ9

Se isso fez sentido, siga para o próximo exercício! Se não, aqui vai um vídeo de visão geral.

Vídeo de visão geral sobre loops for em R

Percorrer linhas de um data frame

Imagine que você está interessado nos dias em que o preço das ações da Apple passa de 117. Se subir acima desse valor, você quer imprimir a data e o preço atuais. Se você tiver um data frame stock com as colunas de date e preço de apple, dá para percorrer as linhas do data frame para fazer isso? Com certeza!

Antes de começar, note que você pode obter o número de linhas do seu data frame com nrow(stock). Em seguida, crie uma sequência para iterar de 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"

Esse exemplo reúne várias coisas que vimos até aqui: if statements, subsetting de vetores, condicionais e loops! Parabéns por chegar até aqui!

Instruções

stock está no seu workspace.

Preencha as lacunas no loop for para que o seguinte seja verdadeiro:

  • price deve receber o preço daquela iteração
  • date deve receber a data daquela iteração
  • Desta vez, você quer saber se apple passa de 116.
  • Se passar, imprima a date e o price.
  • Se ficar abaixo de 116, imprima a date e indique que não foi um dia importante!
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr IDwtIGRhdGEuZnJhbWUoXG4gICAgICAgICAgICAgIGRhdGUgPSBhcy5EYXRlKGMoXCIyMDE2LTEyLTAxXCIsIFwiMjAxNi0xMi0wMlwiLCBcIjIwMTYtMTItMDNcIiwgXCIyMDE2LTEyLTA0XCIsIFwiMjAxNi0xMi0wNVwiLCBcIjIwMTYtMTItMDZcIiwgXCIyMDE2LTEyLTA3XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0wOFwiLCBcIjIwMTYtMTItMDlcIiwgXCIyMDE2LTEyLTEwXCIsIFwiMjAxNi0xMi0xMVwiLCBcIjIwMTYtMTItMTJcIiwgXCIyMDE2LTEyLTEzXCIsIFwiMjAxNi0xMi0xNFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTYtMTItMTVcIiwgXCIyMDE2LTEyLTE2XCIsIFwiMjAxNi0xMi0xN1wiLCBcIjIwMTYtMTItMThcIiwgXCIyMDE2LTEyLTE5XCIsIFwiMjAxNi0xMi0yMFwiLCBcIjIwMTYtMTItMjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDE2LTEyLTIyXCIsIFwiMjAxNi0xMi0yM1wiLCBcIjIwMTYtMTItMjRcIiwgXCIyMDE2LTEyLTI1XCIsIFwiMjAxNi0xMi0yN1wiLCBcIjIwMTYtMTItMjhcIiwgXCIyMDE2LTEyLTI5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTYtMTItMzBcIikpLFxuXG4gICAgICAgICAgICAgIGFwcGxlID0gYygxMDkuNDksIDEwOS45MCwgTkEsIE5BLCAxMDkuMTEsIDEwOS45NSwgMTExLjAzLCAxMTIuMTIsIDExMy45NSwgTkEsIE5BLC AxMTMuMzAsIDExNS4xOSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDExNS4xOSwgMTE1LjgyLCAxMTUuOTcsIE5BLCBOQSwgMTE2LjY0LCAxMTYuOTUsIDExNy4wNiwgMTE2LjI5LCAxMTYuNTIsIE5BLCBOQSwgMTE3LjI2LFxuICAgICAgICAgICAgICAgICAgICAgICAgMTE2Ljc2LCAxMTYuNzMsIDExNS44MilcbiAgICAgICAgICApXG4gICAgICAgICAgc3RvY2sgPC0gc3Vic2V0KHN0b2NrLCAhaXMubmEoYXBwbGUpKSIsInNhbXBsZSI6IlxuIyBMb29wIG92ZXIgc3RvY2sgcm93c1xuICAgICAgICAgZm9yIChyb3cgaW4gMTpfX18pIHtcbiAgICAgICAgICAgICAgcHJpY2UgPC0gc3RvY2tbX19fLCBcIl9fX1wiXVxuICAgICAgICAgICAgICBkYXRlICA8LSBzdG9ja1tfX18sIFwiX19fXCJdXG5cbiAgICAgICAgICAgICAgaWYoX19fID4gX19fKSB7XG4gICAgICAgICAgICAgICAgICBwcmludChwYXN0ZShcIk9uXCIsIF9fXyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlIHN0b2NrIHByaWNlIHdhc1wiLCBfX18pKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcHJpbnQocGFzdGUoXCJUaGUgZGF0ZTosIF9fXyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFu dCBkYXkhXCIpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwi c29sdXRpb24iOiJcbiMgTG9vcCBvdmVyIHN0b2NrIHJvd3NcbiAgICAgICAg ICBmb3IgKHJvdyBpbiAxOm5yb3coc3RvY2spKSB7XG4gICAgICAgICAgICAg IHByaWNlIDwtIHN0b2NrW3JvdywgXCJhcHBsZVwiXVxuICAgICAgICAgICAg ICBkYXRlICA8LSBzdG9ja1tyb3csIFwiZGF0ZVwiXVxuXG4gICAgICAgICAg ICAgIGlmKHByaWNlID4gMTE2KSB7XG4gICAgICAgICAgICAgICAgICBwcmlu dChwYXN0ZShcIk9uXCIsIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcInRoZSBzdG9jayBwcmljZSB3YXNcIiwgcHJpY2UpKVxuICAg ICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcHJpbnQo cGFzdGUoXCJUaGUgZGF0ZTpcIiwgZGF0ZSxcbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFudCBkYXkhXCIpKVxu ICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwic2N0IjoiXG50ZXN0 X3ByZWRlZmluZWRfb2JqZWN0cyhcInN0b2NrXCIpXG5cbiAgICAgICAgICB0 ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChc InJvdyBpbiAxOm5yb3coc3RvY2spXCIpLFxuICAgICAgICAgICAgICAgICAg ICAgICAgZXhwcl90ZXN0ID0gdGVzdF9pZl9lbHNlKGlmX2NvbmRfdGVzdCAg ID0gdGVzdF9zdHVkZW50X3R5cGVkKFwicHJpY2UgPiAxMTZcIiksXG4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp Zl9leHByX3Rlc3QgICA9IHRlc3RfZnVuY3Rpb24oXCJwcmludFwiLCBhcmdz ID0gXCJ4XCIsIGluY29ycmVjdF9tc2cgPSBcIlRoZSBwcmludCBzdGF0ZW1l bnQgb3V0cHV0IGlzIGluY29ycmVjdCwgYXJlIGBkYXRlYCBhbmQgYHByaWNl YCBkZWZpbmVkIGNvcnJlY3RseT9cIiksXG5cbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VfZXhwcl90ZXN0 ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIikpXG4g ICAgICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICBzdWNjZXNz X21zZyhcIk5pY2Ugam9iIVwiKSIsImhpbnQiOiJcbi0gVGhlIGJsYW5rcyB5 b3UgZmlsbCBpbiBzaG91bGQgYmUgc2ltaWxhciB0byB0aGUgZXhhbXBsZS5c biAgICAgICAgICAgICAgICAtIEZvciB0aGUgZWxzZSBzdGF0ZW1lbnQgYmxh bmtzLCB5b3UgbmVlZCB0byBzZWxlY3QgdGhlIGBkYXRlYCBmb3IgdGhlIGN1 cnJlbnQgcm93LiJ9

Percorrer elementos de uma matriz

Até aqui, você percorreu tipos de dados unidimensionais. Se quiser iterar sobre elementos de uma matriz (colunas e linhas), vai precisar de loops aninhados. Vamos usar essa ideia para imprimir as correlações entre três ações.

A maneira mais fácil de pensar nisso é: você começa na linha 1 e segue para a direita, passando pela coluna 1, coluna 2, ... até a última coluna da linha 1. Depois, desce para a linha 2 e repete o processo.

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"

Instruções

A matriz de correlação, corr, está no seu workspace.

  • Imprima corr para dar uma espiada nos dados.
  • Complete o loop aninhado! Ele deve atender ao seguinte:
    • O loop externo deve percorrer as rows de corr.
    • O loop interno deve percorrer as cols de corr.
    • O comando de impressão deve mostrar os nomes da coluna e da linha atuais e também a correlação entre elas.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr cyA8LSBjKFwiYXBwbGVcIiwgXCJpYm1cIiwgXCJtaWNyXCIpXG4gICAgICAg IGNvcnIgPC0gbWF0cml4KGMoMSwgLjk2LCAuODgsIC45NiwgMSwgLjc0LCAu ODgsIC43NCwgMSksIG5yb3c9MylcblxuICAgICAgICBjb2xuYW1lcyhjb3Jy KSA8LSBzdG9ja3NcbiAgICAgICAgcm93bmFtZXMoY29ycikgPC0gc3RvY2tz Iiwic2FtcGxlIjoiXG4gICMgUHJpbnQgb3V0IGNvcnJcblxuXG4gICAgICAg ICMgQ3JlYXRlIGEgbmVzdGVkIGxvb3BcbiAgICAgICAgZm9yKHJvdyBpbiAx Om5yb3coX19fKSkge1xuICAgICAgICAgICAgZm9yKGNvbCBpbiAxOl9fXyhj b3JyKSkge1xuICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKGNvbG5hbWVz KGNvcnIpW19fX10sIFwiYW5kXCIsIHJvd25hbWVzKGNvcnIpW19fX10sXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRp b24gb2ZcIiwgY29ycltyb3csY29sXSkpXG4gICAgICAgICAgICB9XG4gICAg ICAgIH0iLCJzb2x1dGlvbiI6IlxuICAjIFByaW50IG91dCBjb3JyXG4gICAg ICAgICAgY29yclxuXG4gICAgICAgICAgIyBDcmVhdGUgYSBuZXN0ZWQgbG9v cFxuICAgICAgICAgIGZvcihyb3cgaW4gMTpucm93KGNvcnIpKSB7XG4gICAg ICAgICAgICAgIGZvcihjb2wgaW4gMTpuY29sKGNvcnIpKSB7XG4gICAgICAg ICAgICAgICAgICBwcmludChwYXN0ZShjb2xuYW1lcyhjb3JyKVtjb2xdLCBc ImFuZFwiLCByb3duYW1lcyhjb3JyKVtyb3ddLFxuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRpb24gb2ZcIiwgY29y cltyb3csY29sXSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9Iiwi c2N0IjoiXG50ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVu dF90eXBlZChcInJvdyBpbiAxOm5yb3coY29ycilcIiksXG4gICAgICAgICAg ICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2Zvcl9sb29wKGNvbmRf dGVzdCAgID0gdGVzdF9zdHVkZW50X3R5cGVkKFwiY29sIGluIDE6bmNvbChj b3JyKVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhwcl90ZXN0ICAgPSB0ZXN0X2Z1bmN0aW9uKFwi cHJpbnRcIiwgYXJncyA9IFwieFwiLCBpbmNvcnJlY3RfbXNnID0gXCJUaGUg cHJpbnQgc3RhdGVtZW50IG91dHB1dCBpcyBpbmNvcnJlY3QsIGRpZCB5b3Ug ZmlsbCBpbiBgY29sYCBhbmQgYHJvd2AgZm9yIHRoZSBibGFua3M/XCIpXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAg ICBzdWNjZXNzX21zZyhcIk5pY2UhIFRoYXQgd2FzIGEgdG91Z2ggb25lLiBO ZXN0ZWQgbG9vcHMgcmVxdWlyZSBhIGxvdCBvZiBjb21wdXRhdGlvbmFsIGVu ZXJneSwgYmVjYXVzZSBzbyBtYW55IGNhbGN1bGF0aW9ucyBhcmUgcmVxdWly ZWQuXCIpIiwiaGludCI6IlxuICAtIERvbid0IGZvcmdldCB0byB1c2UgdGhl IGBucm93KClgIGFuZCBgbmNvbCgpYCBmdW5jdGlvbnMgaW4geW91ciBsb29w LlxuICAgICAgICAgICAgICAgICAgLSBUaGUgY29kZSB1c2VkIHRvIGNyZWF0 ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsb29wIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyB0aGUgZXhhbXBsZS4ifQ==

Confira também nosso tutorial sobre loops em R.

Tópicos
R
Ciência de dados

Saiba mais sobre R

Curso

R intermediário

6 h
676K
Continue sua jornada para se tornar um ninja do R aprendendo sobre instruções condicionais, loops e funções vetoriais.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial sobre loops for em Python

Aprenda a usar loops “for” em Python pra iterar uma sequência ou as linhas e colunas de um DataFrame pandas.
Aditya Sharma's photo

Aditya Sharma

5 min

Tutorial

Tutorial sobre loops em Python

Um tutorial introdutório completo sobre loops em Python. Aprenda e pratique loops while e for, loops aninhados, as palavras-chave break e continue, a função range e muito mais!
Satyabrata Pal's photo

Satyabrata Pal

15 min

multiple linear regression

Tutorial

Regressão linear múltipla no R: Tutorial com exemplos

Uma visão geral completa para entender as regressões lineares múltiplas no R por meio de exemplos.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Criação de uma lista no R

Pratique Listas em R usando o material do curso Intro to R do DataCamp.
Ryan Sheehy's photo

Ryan Sheehy

3 min

Tutorial

Tutorial de regressão linear no R

Neste tutorial, você aprenderá os fundamentos de um modelo estatístico muito popular: a regressão linear.

Eladio Montero Porras

15 min

Tutorial

Tutorial de Pipes em R para iniciantes

Saiba mais sobre o famoso operador de pipe %>% e outros pipes no R, por que e como você deve usá-los e quais alternativas você pode considerar!
Karlijn Willems's photo

Karlijn Willems

15 min

Ver MaisVer Mais