0Pricing
R Academy · Lekcja

seq() dla niestandardowych sekwencji

Kontroluj rozmiar kroku, długość i kierunek za pomocą seq().

seq() dla niestandardowych sekwencji to bezpłatna lekcja R Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.

Wprowadzenie do seq()

seq() to elastyczny generator sekwencji w R. Podczas gdy : tworzy zakresy liczb całkowitych z krokiem 1, seq() pozwala kontrolować początek, koniec, wielkość kroku i całkowitą długość dowolnej sekwencji liczbowej.

# 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) — własny krok

Argument by określa wielkość kroku między kolejnymi wartościami. Może to być dowolna liczba dodatnia lub ujemna, również dziesiętna. Jest to przydatne do generowania równomiernie rozmieszczonych wartości w odstępach niecałkowitych.

# 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) — stała liczba wartości

Jeśli znasz liczbę wartości, które chcesz uzyskać, zamiast wielkości kroku użyj length.out. R automatycznie obliczy krok, aby równomiernie podzielić przedział.

# 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) — dopasowanie do wektora

seq(along.with = x) generuje sekwencję liczb całkowitych 1:length(x), identyczną jak seq_along(x). Jest przydatna, gdy chcesz połączyć sekwencję indeksów z istniejącym wektorem.

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) — bezpieczna sekwencja od 1 do n

seq_len(n) jest równoważna seq(1, n) lub 1:n, ale poprawnie obsługuje przypadek brzegowy, gdy n = 0, zwracając pusty wektor liczb całkowity zamiast 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
')

Ujemne kroki z seq()

Ustawienie ujemnej wartości by tworzy sekwencję malejącą. Przy użyciu ujemnego kroku wartość from musi być większa niż to, w przeciwnym razie R zwróci ostrzeżenie.

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

Sekwencje zmiennoprzecinkowe

Należy zachować ostrożność przy używaniu kroków zmiennoprzecinkowych: niewielkie błędy zaokrągleń mogą spowodować nieoczekiwane uwzględnienie lub pominięcie ostatniej wartości. Użycie length.out zamiast by pozwala uniknąć tego problemu.

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

Używanie seq() dla osi wykresu

Typowym zastosowaniem seq() jest generowanie wartości dla funkcji matematycznych lub znaczników podziałki osi. Funkcja pozwala próbkować funkcję w przedziale w regularnych odstępach.

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

seq() a :: porównanie

Proszę używać :, gdy potrzebne są liczby całkowite z krokiem 1. seq() należy używać, gdy potrzebne są kroki dziesiętne, określona liczba wartości lub dopasowanie długości do innego wektora. W przypadku prostych zakresów liczb całkowitych obie konstrukcje mogą dawać identyczne wyniki.

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

Praktyka: generowanie punktów w czasie

seq() doskonale nadaje się do tworzenia osi czasu w analizie danych — na przykład do generowania miesięcznych, kwartalnych lub rocznych przedziałów na potrzeby pracy z szeregami czasowymi.

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

Podsumowanie argumentów seq()

Oto krótkie zestawienie argumentów seq():

  • from — wartość początkowa (domyślnie 1)
  • to — wartość końcowa (domyślnie 1)
  • by — wielkość kroku między wartościami
  • length.out — dokładna liczba generowanych wartości
  • along.with — dopasowanie długości do innego wektora

Należy podać tylko jeden z argumentów: by lub 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), '
')

Szybkie sprawdzenie

Ile wartości zwraca seq(0, 1, length.out = 6)?

Podsumowanie: seq() dla niestandardowych sekwencji

Świetnie! Najważniejsze informacje z tej lekcji:

  • seq(from, to, by) — tworzy sekwencję ze stałą wielkością kroku
  • seq(from, to, length.out = n) — tworzy dokładnie n równomiernie rozmieszczonych wartości
  • seq(along.with = x) — generuje indeksy odpowiadające wektorowi x
  • seq_len(n) — bezpieczna wersja 1:n (obsługuje n=0)
  • W przypadku sekwencji zmiennoprzecinkowych należy preferować length.out zamiast by, aby uniknąć problemów z zaokrągleniami
  • Należy używać seq(), gdy : nie wystarcza (kroki niecałkowite, stała liczba wartości)
# 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)
')

Często zadawane pytania

Czy lekcja „seq() dla niestandardowych sekwencji” jest bezpłatna?

Tak — pełny tekst „seq() dla niestandardowych sekwencji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „seq() dla niestandardowych sekwencji”?

Kontroluj rozmiar kroku, długość i kierunek za pomocą seq(). Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć R Academy?

Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „seq() dla niestandardowych sekwencji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?

Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Operator dwukropka dla zakresów liczb całkowitych
  2. seq() dla niestandardowych sekwencji
  3. rep() dla powtarzających się wartości
  4. Nazwane wektory i sekwencje
← Powrót do R Academy