Iterando sobre elementos de vetores
Parte da seção Fundamentos do Journey de R da Coddy. Lição 63 de 78.
Embora as operações vetorizadas do R sejam poderosas, às vezes você precisa processar cada elemento individualmente com uma lógica personalizada. Um loop for permite que você itere pelos elementos de um vetor um de cada vez.
A maneira mais simples de percorrer um vetor é iterar diretamente sobre seus elementos:
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}Saída:
[1] "apple"
[1] "banana"
[1] "cherry"Em cada iteração, a variável de loop fruit assume o valor do próximo elemento no vetor. Esta abordagem é limpa e legível quando você precisa apenas dos próprios valores.
Você pode combinar a iteração com a lógica condicional para processar elementos seletivamente:
numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
if (num > 5) {
print(num)
}
}Saída:
[1] 8
[1] 10Este padrão é útil quando você precisa aplicar operações diferentes com base no valor de cada elemento, algo que operações vetorizadas sozinhas nem sempre conseguem lidar.
Desafio
FácilVocê receberá duas linhas de entrada:
- Uma lista de números separados por vírgulas (por exemplo,
12,5,18,3,25,8,14) - Um valor de limiar (por exemplo,
10)
Usando um loop for para iterar sobre os elementos do vetor:
- Crie um vetor a partir dos números separados por vírgulas
- Percorra cada elemento do vetor
- Para cada elemento que seja maior ou igual ao limiar, imprima esse elemento usando
print()
Por exemplo, se as entradas forem:
4,15,8,22,6,19,11
10A saída deverá ser:
[1] 15
[1] 22
[1] 19
[1] 11Explicação: o loop verifica cada elemento em relação ao limiar (10). Os elementos 15, 22, 19 e 11 são todos maiores ou iguais a 10, portanto são impressos. Os elementos 4, 8 e 6 são ignorados.
Experimente você mesmo
# Ler a entrada
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
threshold <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)
# Converter a string separada por vírgulas em um vetor numérico
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# TODO: Escreva seu código abaixo
# Use um loop for para iterar pelo vetor numbers
# Para cada elemento >= threshold, imprima-o usando print()Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores - Parte 2
Operadores lógicos (AND, OR)Operadores lógicos - Parte 2 (NOT)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica3Operadores - Parte 1
Operadores aritméticosDivisão inteira e móduloOperadores de atribuiçãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas de conversão de tiposRecapitulação - Calculadora de idadeRecapitulação - Verdadeiro ou falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetros Padrão12Iterando sobre sequências
Iterando sobre elementos de vetoresUsando seq_along()Iterando sobre caracteres (strsplitFunções de manipulação de stringsPratique por conta própria: Compilador de R online