Menu
Coddy logo textTech

Uso de seq_along()

Parte de la sección Fundamentos del Journey de R de Coddy — lección 64 de 78.

A veces necesitas tanto el valor del elemento como su posición en el vector. Aunque iterar directamente sobre los elementos es limpio, no te da acceso al índice. La función seq_along() resuelve esto generando una secuencia de índices para cualquier vector.

La función seq_along() devuelve una secuencia desde 1 hasta la longitud del vector:

fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))

Salida:

[1] 1 2 3

Al iterar sobre estos índices, puedes acceder tanto a la posición como al valor:

fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
  cat(i, ":", fruits[i], "\n")
}

Salida:

1 : apple 
2 : banana 
3 : cherry

Este enfoque es especialmente útil cuando necesitas modificar elementos en posiciones específicas o comparar elementos con sus vecinos. Usar seq_along() es más seguro que 1:length(vec) porque maneja correctamente los vectores vacíos, devolviendo una secuencia vacía en lugar de 1:0.

challenge icon

Desafío

Fácil

Recibirás una sola línea de entrada que contiene números separados por comas (por ejemplo, 10,20,30,40,50).

Usando seq_along() para iterar sobre el vector con índices:

  1. Crea un vector a partir de la entrada separada por comas
  2. Recorre el vector usando seq_along() para obtener tanto el índice como el valor
  3. Para cada elemento, imprime el índice, el valor y la suma acumulada hasta ese punto (suma de todos los elementos desde la posición 1 hasta la posición actual)

Usa cat() con el formato: Position X: VALUE (Running total: TOTAL) seguido de una nueva línea.

Por ejemplo, si la entrada es:

5,10,15,20

La salida debería 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)

Explicación: En la posición 1, el valor es 5 y el total acumulado es 5. En la posición 2, el valor es 10 y el total acumulado es 5+10=15. En la posición 3, el valor es 15 y el total acumulado es 5+10+15=30, y así sucesivamente.

Sugerencia: Usa sum(vector[1:i]) para calcular la suma acumulada hasta la posición i.

Hoja de referencia

La función seq_along() genera una secuencia de índices desde 1 hasta la longitud de un vector:

fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))
# Salida: [1] 1 2 3

Use seq_along() en un bucle para acceder tanto al índice como al valor:

fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
  cat(i, ":", fruits[i], "\n")
}
# Salida:
# 1 : apple 
# 2 : banana 
# 3 : cherry

Usar seq_along() es más seguro que 1:length(vec) porque maneja correctamente los vectores vacíos, devolviendo una secuencia vacía en lugar de 1:0.

Pruébalo tú mismo

# Leer entrada
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)

# Convertir cadena separada por comas en un vector numérico
numbers <- as.numeric(strsplit(input_line, ",")[[1]])

# TODO: Escribe tu código a continuación
# Usa seq_along() para recorrer el vector
# Para cada posición, imprime el índice, el valor y el total acumulado
# Usa cat() con el formato: Position X: VALUE (Running total: TOTAL)\n
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos