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.
· 5 min leer

Explore com IA


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.


# Sequence
         seq <- c(1:10)

         # Print loop
         for (value in ___) {
           print(___)
         }

          # A sum variable
          sum <- 0

          # Sum loop
          for (value in seq) {
          sum <- ___ + ___
          print(___)
          }

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!

# Loop over stock rows
         for (row in 1:___) {
              price <- stock[___, "___"]
              date  <- stock[___, "___"]

              if(___ > ___) {
                  print(paste("On", ___,
                              "the stock price was", ___))
              } else {
                  print(paste("The date:, ___,
                              "is not an important day!"))
              }
            }

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.

  # Print out corr


        # Create a nested loop
        for(row in 1:nrow(___)) {
            for(col in 1:___(corr)) {
                print(paste(colnames(corr)[___], "and", rownames(corr)[___],
                            "have a correlation of", corr[row,col]))
            }
        }

Confira também nosso tutorial sobre loops em R.

Temas

Relacionado

Tutorial

Tutorial sobre loops for em Python

Tutorial

Tutorial sobre loops em Python