Usando seq_along()
Parte da seção Fundamentos do Journey de R da Coddy — lição 64 de 78.
Às vezes, você precisa tanto do valor do elemento quanto de sua posição no vetor. Embora a iteração direta sobre os elementos seja limpa, ela não fornece acesso ao índice. A função seq_along() resolve isso gerando uma sequência de índices para qualquer vetor.
A função seq_along() retorna uma sequência de 1 até o comprimento do vetor:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))Saída:
[1] 1 2 3Ao iterar sobre esses índices, você pode acessar tanto a posição quanto o valor:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}Saída:
1 : apple
2 : banana
3 : cherryEsta abordagem é especialmente útil quando você precisa modificar elementos em posições específicas ou comparar elementos com seus vizinhos. Usar seq_along() é mais seguro do que 1:length(vec) porque ele lida com vetores vazios corretamente, retornando uma sequência vazia em vez de 1:0.
Desafio
FácilVocê receberá uma única linha de entrada contendo números separados por vírgulas (ex: 10,20,30,40,50).
Usando seq_along() para iterar sobre o vetor com índices:
- Crie um vetor a partir da entrada separada por vírgulas
- Percorra o vetor usando
seq_along()para obter tanto o índice quanto o valor - Para cada elemento, imprima o índice, o valor e a soma cumulativa até aquele ponto (soma de todos os elementos da posição 1 até a posição atual)
Use cat() com o formato: Position X: VALUE (Running total: TOTAL) seguido por uma quebra de linha.
Por exemplo, se a entrada for:
5,10,15,20A saída deve ser:
Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)Explicação: Na posição 1, o valor é 5 e o total acumulado é 5. Na posição 2, o valor é 10 e o total acumulado é 5+10=15. Na posição 3, o valor é 15 e o total acumulado é 5+10+15=30, e assim por diante.
Dica: Use sum(vector[1:i]) para calcular a soma cumulativa até a posição i.
Folha de consulta
A função seq_along() gera uma sequência de índices de 1 até o comprimento de um vetor:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))
# Saída: [1] 1 2 3Use seq_along() em um loop para acessar tanto o índice quanto o valor:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}
# Saída:
# 1 : apple
# 2 : banana
# 3 : cherryUsar seq_along() é mais seguro do que 1:length(vec) porque ele lida com vetores vazios corretamente, retornando uma sequência vazia em vez de 1:0.
Experimente você mesmo
# Ler a entrada
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)
# Converter a string separada por vírgulas em um vetor numérico
numbers <- as.numeric(strsplit(input_line, ",")[[1]])
# TODO: Escreva seu código abaixo
# Use seq_along() para percorrer o vetor
# Para cada posição, imprima o índice, o valor e o total acumulado
# Use cat() com o formato: Position X: VALUE (Running total: TOTAL)\nEsta 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)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
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 de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico 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âmetro Padrão12Iterando sobre Sequências
Iterando sobre Elementos de VetoresUsando seq_along()Iterando sobre Caracteres (strsplit)Funções de Manipulação de Strings