Curso
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.
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:
pricedeve receber o preço daquela iteraçãodatedeve receber a data daquela iteração- Desta vez, você quer saber se
applepassa de116. - Se passar, imprima a
datee oprice. - Se ficar abaixo de
116, imprima adatee indique que não foi um dia importante!
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
corrpara dar uma espiada nos dados. - Complete o loop aninhado! Ele deve atender ao seguinte:
- O loop externo deve percorrer as
rows decorr. - O loop interno deve percorrer as
cols decorr. - O comando de impressão deve mostrar os nomes da coluna e da linha atuais e também a correlação entre elas.
- O loop externo deve percorrer as
Confira também nosso tutorial sobre loops em R.
