0Pricing
R Academy · Lección

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 valores
  • length.out — cantidad exacta de valores que se generarán
  • along.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 fijo
  • seq(from, to, length.out = n) — crea exactamente n valores distribuidos uniformemente
  • seq(along.with = x) — genera índices que coinciden con el vector x
  • seq_len(n) — versión segura de 1:n (maneja n=0)
  • Prefiera length.out en lugar de by para 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

  1. El operador dos puntos para rangos de enteros
  2. seq() para secuencias personalizadas
  3. rep() para repetir valores
  4. Vectores y secuencias con nombre
← Volver a R Academy