カスタムシーケンスのためのseq()
seq()でステップ幅、長さ、方向を制御します。
「カスタムシーケンスのためのseq()」はCoddyKit上の無料R Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。
seq()の概要
seq()は、Rで柔軟にシーケンスを生成する関数です。:がステップ1の整数範囲を作成するのに対し、seq()では任意の数値シーケンスの開始値、終了値、ステップ幅、全体の長さを指定できます。
# 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) — ステップ幅の指定
by引数は、連続する値の間のステップ幅を設定します。小数を含む任意の正または負の数を指定できます。整数以外の間隔で等間隔の値を生成するときに便利です。
# 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) — 個数の固定
ステップ幅ではなく必要な値の個数が決まっている場合は、length.outを使用します。Rがステップ幅を自動的に計算し、区間を等間隔に分割します。
# 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) — ベクトルに合わせる
seq(along.with = x)はseq_along(x)と同じ1:length(x)という整数シーケンスを生成します。既存のベクトルとインデックスシーケンスを対応付けたい場合に便利です。
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) — 安全な1からnまで
seq_len(n)はseq(1, n)または1:nと同等ですが、n = 0の場合を正しく処理し、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
')seq()で負のステップを使う
by に負の値を指定すると、降順のシーケンスが作成されます。負のステップを使用する場合、from は to より大きくする必要があります。そうでない場合、R は警告を返します。
# 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, '
')浮動小数点シーケンス
浮動小数点のステップを使用する場合は注意が必要です。わずかな丸め誤差によって、最後の値が予期せず含まれたり、除外されたりすることがあります。by の代わりに length.out を使用すると、この問題を避けられます。
# 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), '
')seq() をプロットの軸に使用する
seq() の一般的な用途の一つは、数学関数や軸の目盛り用の値を生成することです。区間内の関数を一定間隔でサンプリングできます。
# 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() と : の比較
ステップ 1 の整数が必要な場合は : を使用します。小数のステップ、指定した個数の値、または別のベクトルと同じ長さが必要な場合は seq() を使用します。単純な整数範囲では、同じ結果を生成できます。
# 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), '
')実践:時点の生成
seq() は、データ分析で時間軸を作成するのに適しています。たとえば、時系列処理用に月次、四半期、年次の間隔を生成できます。
# 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], '
')seq() の引数のまとめ
seq() の引数のクイックリファレンスを示します。
from— 開始値(デフォルトは 1)to— 終了値(デフォルトは 1)by— 値の間のステップ幅length.out— 生成する値の正確な個数along.with— 別のベクトルと長さを合わせる
by と 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), '
')クイックチェック
seq(0, 1, length.out = 6) はいくつの値を生成しますか?
復習:カスタムシーケンスに seq() を使用する
よくできました。このレッスンの重要なポイントをまとめます。
seq(from, to, by)— 固定されたステップ幅でシーケンスを作成するseq(from, to, length.out = n)— 等間隔の値を n 個ちょうど作成するseq(along.with = x)— ベクトル x と一致するインデックスを生成するseq_len(n)— 1:n の安全なバージョン(n=0 に対応)- 浮動小数点シーケンスでは、丸め誤差を避けるため
byよりlength.outを優先する :では不十分な場合(整数以外のステップ、固定された個数)にseq()を使用する
# 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)
')よくある質問
「カスタムシーケンスのためのseq()」レッスンは無料ですか?
はい。「カスタムシーケンスのためのseq()」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。
「カスタムシーケンスのためのseq()」で何を学びますか?
seq()でステップ幅、長さ、方向を制御します。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
R Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「カスタムシーケンスのためのseq()」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このR Academyレッスンでコードを書いて実行できますか?
はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 整数範囲のためのコロン演算子
- カスタムシーケンスのためのseq()
- 値の繰り返しのためのrep()
- 名前付きベクトルと名前付きシーケンス