0Pricing
R Academy · Lezione

seq() per sequenze personalizzate

Controlli l'ampiezza del passo, la lunghezza e la direzione con seq().

seq() per sequenze personalizzate è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.

Introduzione a seq()

seq() è il generatore flessibile di sequenze di R. Mentre : crea intervalli di interi con passo 1, seq() permette di controllare l’inizio, la fine, l’ampiezza del passo e la lunghezza totale di qualsiasi sequenza numerica.

# 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) — Passo personalizzato

L’argomento by imposta la dimensione del passo tra valori consecutivi. Può essere qualsiasi numero positivo o negativo, inclusi i decimali. È utile per generare valori equidistanti a intervalli non interi.

# 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) — Numero fisso di valori

Quando sa quanti valori desidera, anziché conoscere la dimensione del passo, usi length.out. R calcolerà automaticamente il passo per suddividere uniformemente l’intervallo.

# 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) — Adattarsi a un vettore

seq(along.with = x) genera la sequenza di interi 1:length(x), identica a seq_along(x). È utile quando vuole associare una sequenza di indici a un vettore esistente.

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) — Da 1 a n in modo sicuro

seq_len(n) equivale a seq(1, n) o 1:n, ma gestisce correttamente il caso particolare in cui n = 0, restituendo un vettore intero vuoto invece di 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
')

Passi negativi con seq()

Impostare un valore by negativo crea una sequenza decrescente. Quando si usa un passo negativo, from deve essere maggiore di to; in caso contrario, R restituisce un avviso.

# 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, '
')

Sequenze in virgola mobile

Prestate attenzione ai passi in virgola mobile: piccoli errori di arrotondamento possono far sì che l'ultimo valore venga incluso o escluso in modo imprevisto. Usare length.out invece di by evita questo 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), '
')

Usare seq() per gli assi dei grafici

Un uso comune di seq() consiste nel generare valori per funzioni matematiche o tacche degli assi. Consente di campionare una funzione su un intervallo a intervalli regolari.

# 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), '
')

Confronto tra seq() e :

Usate : quando desiderate numeri interi con passo 1. Usate seq() quando servono passi decimali, un numero specifico di valori o una sequenza della stessa lunghezza di un altro vettore. Per semplici intervalli di interi possono produrre risultati identici.

# 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), '
')

Esercitazione: generare punti temporali

seq() è ideale per creare assi temporali nell'analisi dei dati: ad esempio, per generare intervalli mensili, trimestrali o annuali nell'elaborazione di serie temporali.

# 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], '
')

Riepilogo degli argomenti di seq()

Ecco un rapido riferimento agli argomenti di seq():

  • from — valore iniziale (predefinito 1)
  • to — valore finale (predefinito 1)
  • by — ampiezza del passo tra i valori
  • length.out — numero esatto di valori da generare
  • along.with — usa la lunghezza di un altro vettore

È necessario specificare uno solo tra by e 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), '
')

Verifica rapida

Quanti valori produce seq(0, 1, length.out = 6)?

Riepilogo: seq() per sequenze personalizzate

Ottimo lavoro! Ecco i concetti principali di questa lezione:

  • seq(from, to, by) — crea una sequenza con un passo fisso
  • seq(from, to, length.out = n) — crea esattamente n valori equidistanti
  • seq(along.with = x) — genera indici della stessa lunghezza del vettore x
  • seq_len(n) — versione sicura di 1:n (gestisce n=0)
  • Preferite length.out a by per le sequenze in virgola mobile, così da evitare problemi di arrotondamento
  • Usate seq() quando : non è sufficiente (passi non interi, numero fisso di valori)
# 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)
')

Domande Frequenti

La lezione «seq() per sequenze personalizzate» è gratuita?

Sì — il testo completo di «seq() per sequenze personalizzate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.

Cosa imparerò in «seq() per sequenze personalizzate»?

Controlli l'ampiezza del passo, la lunghezza e la direzione con seq(). Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare R Academy?

Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «seq() per sequenze personalizzate»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione R Academy?

Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. L'operatore due punti per gli intervalli interi
  2. seq() per sequenze personalizzate
  3. rep() per ripetere i valori
  4. Vettori e sequenze con nomi
← Torna a R Academy