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 3Al 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 : cherryEste 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.
Desafío
FácilRecibirá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:
- Crea un vector a partir de la entrada separada por comas
- Recorre el vector usando
seq_along()para obtener tanto el índice como el valor - 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,20La 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 3Use 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 : cherryUsar 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)\nEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos (AND, OR)Operadores lógicos Parte 2 (NOT)Resumen - Lógica simpleLógica vectorizada Parte 1Lógica vectorizada Parte 27Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario2Variables y tipos de datos
Tipo de dato numéricoTipo de dato enteroTipo de dato de caracteresTipo de dato lógicoComprobación de tipos de datosConvenciones de nomenclaturaValores faltantes: NAResumen - Creación de variables8Bucles
Bucle ForBucle WhileBreakNext (Continue)Repaso - FactorialGeneración de secuencias (seq, :)Bucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosDivisión entera y móduloOperadores de asignaciónRepaso - Matemáticas simplesOperadores de comparación6E/S básica
Imprimir salidaCat para salidaSalida con variablesLectura de entrada con readline()Conceptos básicos de conversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso9Funciones
Declarar una funciónArgumentos de una funciónValores de retornoRepaso - Función SigmaRepaso - Función de validaciónValores de parámetros por defecto12Iterar sobre secuencias
Iterar sobre elementos de un vectorUso de seq_along()Iterar sobre caracteres (strsplit)Funciones de manipulación de cadenas