Menu
Coddy logo textTech

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 3

Ao 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 : cherry

Esta 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.

challenge icon

Desafio

Fácil

Você 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:

  1. Crie um vetor a partir da entrada separada por vírgulas
  2. Percorra o vetor usando seq_along() para obter tanto o índice quanto o valor
  3. 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,20

A 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 3

Use 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 : cherry

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.

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)\n
quiz iconTeste seus conhecimentos

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