seq() para secuencias personalizadas
Controle el tamaño del paso, la longitud y la dirección con seq().
seq() para secuencias personalizadas es una lección gratuita de R Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.
Introducción a seq()
seq() es el generador flexible de secuencias de R. Mientras que : crea intervalos de enteros con paso 1, seq() permite controlar el inicio, el final, el tamaño del paso y la longitud total de cualquier secuencia numérica.
# Basic seq() usage
basic <- seq(1, 10)
cat('seq(1, 10):', basic, '
')
# With step size
by_two <- seq(0, 20, by = 2)
cat('seq(0, 20, by=2):', by_two, '
')seq(from, to, by) — paso personalizado
El argumento by establece el tamaño del paso entre valores consecutivos. Puede ser cualquier número positivo o negativo, incluidos los decimales. Esto resulta útil para generar valores espaciados uniformemente en intervalos no enteros.
# Decimal step
celsius <- seq(0, 100, by = 12.5)
cat('Every 12.5 degrees:', celsius, '
')
# Step of 0.1
fine_scale <- seq(1.0, 1.5, by = 0.1)
cat('Fine scale:', fine_scale, '
')
# Negative step (descending)
countdown <- seq(10, 0, by = -2)
cat('Countdown by 2:', countdown, '
')seq(from, to, length.out) — cantidad fija
Cuando sabe cuántos valores desea, en lugar del tamaño del paso, use length.out. R calculará automáticamente el paso para dividir el intervalo de manera uniforme.
# 5 evenly spaced points between 0 and 1
unit_interval <- seq(0, 1, length.out = 5)
cat('5 points in [0,1]:', unit_interval, '
')
# 7 breakpoints for a histogram
breakpoints <- seq(0, 100, length.out = 7)
cat('Histogram breaks:', breakpoints, '
')
# Step is automatically calculated
step <- (100 - 0) / (7 - 1)
cat('Step size:', step, '
')seq(along.with = x) — hacer coincidir un vector
seq(along.with = x) genera la secuencia de enteros 1:length(x), idéntica a seq_along(x). Es útil cuando desea asociar una secuencia de índices con un vector existente.
rainfall <- c(55.2, 62.1, 48.7, 71.3, 38.9, 90.4, 45.0)
# Generate matching index sequence
idx <- seq(along.with = rainfall)
cat('Indices:', idx, '
')
cat('Rainfall:', rainfall, '
')
# Use to find position of max
cat('Position of max rainfall:', which.max(rainfall), '
')
cat('Max rainfall:', max(rainfall), 'mm
')seq_len(n) — de 1 a n de forma segura
seq_len(n) equivale a seq(1, n) o 1:n, pero gestiona correctamente el caso límite n = 0 al devolver un vector entero vacío en lugar de c(1, 0).
# Normal use
cat('seq_len(5):', seq_len(5), '
')
# Edge case: n = 0
cat('1:0 :', 1:0, '
') # produces 1 0 (WRONG)
cat('seq_len(0):', seq_len(0), '
') # produces integer(0) (CORRECT)
# In practice: safe loop
my_data <- c() # intentionally empty
for (i in seq_len(length(my_data))) {
cat('Processing item', i, '
')
}
cat('Loop completed without error
')Pasos negativos con seq()
Establecer un valor by negativo crea una secuencia descendente. from debe ser mayor que to al usar un paso negativo; de lo contrario, R devuelve una advertencia.
# Countdown from 100 to 0
countdown_100 <- seq(100, 0, by = -10)
cat('Countdown:', countdown_100, '
')
# Temperature drop simulation
start_temp <- 30.0
end_temp <- 15.0
hourly_temps <- seq(start_temp, end_temp, by = -1.5)
cat('Hourly cooling:', hourly_temps, '
')Secuencias de punto flotante
Tenga cuidado con los pasos de punto flotante: pequeños errores de redondeo pueden hacer que el último valor se incluya o se excluya inesperadamente. Usar length.out en lugar de by evita este problema.
# Floating point step: may include or exclude endpoint
seq_by <- seq(0, 1, by = 0.1)
cat('By 0.1 (', length(seq_by), 'values):', seq_by, '
')
# length.out: always exactly n values
seq_lo <- seq(0, 1, length.out = 11)
cat('length.out=11:', seq_lo, '
')
# Check: are they the same?
cat('Identical?', identical(seq_by, seq_lo), '
')Uso de seq() para los ejes de gráficos
Un uso habitual de seq() es generar valores para funciones matemáticas o marcas de los ejes. Permite muestrear una función a lo largo de un intervalo con una separación regular.
# Sample a sine wave
x_vals <- seq(0, 2 * pi, length.out = 13)
y_vals <- round(sin(x_vals), 3)
cat('x values (radians):', round(x_vals, 2), '
')
cat('sin(x) values: ', y_vals, '
')
# Find the approximate peak
cat('Peak near x =', round(x_vals[which.max(y_vals)], 3), '
')Comparación entre seq() y :
Use : cuando necesite enteros con un paso de 1. Use seq() cuando necesite pasos decimales, una cantidad específica de valores o igualar la longitud de otro vector. Pueden producir resultados idénticos para rangos sencillos de enteros.
# These produce the same integer sequence
a <- 1:5
b <- seq(1, 5)
c_seq <- seq(1, 5, by = 1)
d <- seq(1, 5, length.out = 5)
cat('1:5 :', a, '
')
cat('seq(1,5) :', b, '
')
cat('seq(1,5,by=1) :', c_seq, '
')
cat('seq(1,5,lo=5) :', d, '
')
cat('All identical? :', identical(a, d), '
')Práctica: generación de puntos temporales
seq() es ideal para crear ejes temporales en el análisis de datos; por ejemplo, para generar intervalos mensuales, trimestrales o anuales al trabajar con series temporales.
# Monthly data points (as numeric month indices)
months_idx <- seq(1, 12, by = 1)
month_names <- month.abb # built-in R constant
cat('Month indices:', months_idx, '
')
cat('Month names :', month_names, '
')
# Quarterly: every 3 months
quarters <- seq(1, 12, by = 3)
cat('Quarter starts:', quarters, '
')
cat('Quarter names :', month_names[quarters], '
')Resumen de los argumentos de seq()
Esta es una referencia rápida de los argumentos de seq():
from— valor inicial (predeterminado: 1)to— valor final (predeterminado: 1)by— tamaño del paso entre valoreslength.out— cantidad exacta de valores que se generaránalong.with— iguala la longitud de otro vector
Solo debe proporcionar uno de by o length.out.
# Five different forms of seq()
cat('seq(5) :', seq(5), '
')
cat('seq(2, 10) :', seq(2, 10), '
')
cat('seq(0, 1, by=0.25) :', seq(0, 1, by = 0.25), '
')
cat('seq(0, 1, length.out=5):', seq(0, 1, length.out = 5), '
')
cat('seq(along.with=1:4) :', seq(along.with = 1:4), '
')Comprobación rápida
¿Cuántos valores produce seq(0, 1, length.out = 6)?
Recapitulación: seq() para secuencias personalizadas
¡Excelente trabajo! Estas son las ideas clave de la lección:
seq(from, to, by)— crea una secuencia con un tamaño de paso fijoseq(from, to, length.out = n)— crea exactamente n valores distribuidos uniformementeseq(along.with = x)— genera índices que coinciden con el vector xseq_len(n)— versión segura de 1:n (maneja n=0)- Prefiera
length.outen lugar debypara secuencias de punto flotante y evitar problemas de redondeo - Use
seq()cuando:no sea suficiente (pasos no enteros o cantidad fija de valores)
# Final demo: all seq() forms
cat('Even 0-10: ', seq(0, 10, by = 2), '
')
cat('5 in [0,1]: ', seq(0, 1, length.out = 5), '
')
cat('Match 3-elem: ', seq(along.with = c('a', 'b', 'c')), '
')
cat('Safe 1:0: ', seq_len(0), '(empty)
')Preguntas frecuentes
¿La lección «seq() para secuencias personalizadas» es gratis?
Sí — el texto completo de «seq() para secuencias personalizadas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.
¿Qué aprenderé en «seq() para secuencias personalizadas»?
Controle el tamaño del paso, la longitud y la dirección con seq(). Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar R Academy?
No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «seq() para secuencias personalizadas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de R Academy?
Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El operador dos puntos para rangos de enteros
- seq() para secuencias personalizadas
- rep() para repetir valores
- Vectores y secuencias con nombre