整数範囲のためのコロン演算子
コロン演算子を使い、整数の連続列をすばやく作成します。
「整数範囲のためのコロン演算子」はCoddyKit上の無料R Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。
コロン演算子
:演算子は、開始値から終了値まで1ずつ(降順では-1ずつ)増加する整数シーケンスを生成します。Rで範囲を作成する最も高速で簡潔な方法です。
# Basic integer range
ones_to_ten <- 1:10
cat('1 to 10:', ones_to_ten, '
')
# Descending range
ten_to_one <- 10:1
cat('10 to 1:', ten_to_one, '
')forループでの:の使用
コロン演算子は、forループのカウンターで最もよく使用されます。別の変数を用意せずにシーケンスをインラインで作成できるため、コードを簡潔に保てます。
# Classic for loop with colon range
total <- 0
for (i in 1:5) {
total <- total + i
cat('i =', i, ', running total =', total, '
')
}
cat('Sum of 1 to 5:', total, '
')負の値と小数の範囲
:演算子は負の数や小数にも使用できます(ただし、ステップは常に1または-1です)。開始値と終了値が等しい場合は、単一の値を返します。
# Negative range
neg_range <- -3:3
cat('-3 to 3:', neg_range, '
')
# Range crossing zero
cross_zero <- -5:5
cat('-5 to 5:', cross_zero, '
')
# Single value
cat('5:5 =', 5:5, '
')
# Decimal start (step is still 1)
cat('1.5:5.5 =', 1.5:5.5, '
')安全な長さのシーケンスに使うseq_len()
seq_len(n)は1, 2, ..., nというシーケンスを生成します。1:nとは異なり安全で、n = 0の場合はc(1, 0)ではなく空のベクトルを返すため、ループでのバグを防げます。
# Compare 1:n vs seq_len(n) when n = 0
n <- 0
cat('1:0 produces:', 1:n, '(length', length(1:n), ') -- DANGEROUS
')
cat('seq_len(0):', seq_len(n), '(length', length(seq_len(n)), ') -- SAFE
')
# Correct use in a loop
my_vector <- c() # empty
for (i in seq_len(length(my_vector))) {
cat('This will not execute
')
}
cat('Loop over empty vector is safe with seq_len
')インデックスシーケンスに使うseq_along()
seq_along(x)は1:length(x)というシーケンスを生成し、xの各要素に1つずつインデックスを割り当てます。長さ0のベクトルも正しく処理できるため、インデックスでベクトルを反復する最も安全な方法です。
cities <- c('Tokyo', 'Delhi', 'Shanghai', 'Dhaka', 'Cairo')
# seq_along gives indices 1 to length
cat('Indices:', seq_along(cities), '
')
# Use in loop to access both index and value
for (i in seq_along(cities)) {
cat(i, ':', cities[i], '
')
}ベクトルのインデックス指定でのコロン範囲
:演算子は、ベクトルや行列からスライスを抽出するためによく使用されます。これにより、要素の連続した部分列を取得できます。
temperatures <- c(18.5, 21.0, 23.4, 19.8, 25.1, 22.7, 17.3, 20.0)
# Extract a slice (elements 3 to 6)
midweek <- temperatures[3:6]
cat('Midweek temps:', midweek, '
')
# Last 3 elements
n <- length(temperatures)
cat('Last 3:', temperatures[(n-2):n], '
')コロンを使ったベクトルの反転
length()と:演算子を組み合わせると、ベクトルを簡単に反転できます。より慣用的なのはrev()ですが、コロンを使う方法は範囲の仕組みを理解するのに役立ちます。
words <- c('data', 'science', 'with', 'R')
n <- length(words)
# Manual reverse using colon
reversed_idx <- n:1
reversed_words <- words[reversed_idx]
cat('Original:', words, '
')
cat('Reversed:', reversed_words, '
')
# Or simply:
cat('Using rev():', rev(words), '
')テストデータの作成に:を使う
コロン演算子は、検証用のベクトルや行列をすばやく作成して試すときに便利です。算術演算と組み合わせれば、単純ではないテストデータも生成できます。
# Create a simple test dataset
student_ids <- 101:110
exam_scores <- (1:10) * 8 + 20 # scores: 28, 36, 44, ...
cat('Student IDs:', student_ids, '
')
cat('Exam scores:', exam_scores, '
')
cat('Mean score:', mean(exam_scores), '
')
cat('Passing count:', sum(exam_scores >= 60), '
')コロンの優先順位に関する注意
覚えておきましょう。:は+や-より優先順位が高くなります。そのため、1:n-1は1:(n-1)ではなく(1:n) - 1を意味します。シーケンスの範囲に算術演算を使う場合は、必ず括弧を付けてください。
n <- 5
# These look similar but produce different results
cat('1:n-1 =', 1:n - 1, '
') # (1:5)-1 = 0 1 2 3 4
cat('1:(n-1) =', 1:(n - 1), '
') # 1:4 = 1 2 3 4
# Practical: skip last element
v <- c(10, 20, 30, 40, 50)
cat('All but last:', v[1:(length(v) - 1)], '
')範囲の組み合わせ
c()を使うと、複数の範囲を組み合わせられます。これにより、より大きなベクトルから特定の部分を選択するのに便利な、連続していないインデックスベクトルを作成できます。
data_vals <- c(5, 12, 3, 8, 15, 7, 20, 1, 9, 11)
# Select first 3 and last 3
first_and_last <- data_vals[c(1:3, 8:10)]
cat('First 3 and last 3:', first_and_last, '
')
# Skip middle: take 1:3 and 7:10
outer <- data_vals[c(1:3, 7:10)]
cat('Outer elements:', outer, '
')整数範囲:まとめ
コロン演算子とその関連関数は、Rで欠かせないツールです:
a:b— aからbまでの整数シーケンス(ステップは1または-1)seq_len(n)—1:nの安全な代替(n=0にも対応)seq_along(x)— ベクトルx用の安全なインデックスシーケンス- 括弧を使用:
1:n+1ではなく1:(n+1) - ループカウンター、スライス、テストデータの作成に便利
# All three in action
x <- c(100, 200, 300, 400, 500)
cat('1:5 :', 1:5, '
')
cat('seq_len(5) :', seq_len(5), '
')
cat('seq_along(x):', seq_along(x), '
')
cat('x[2:4] :', x[2:4], '
')理解度チェック
n = 4のとき、1:n + 1は何を生成しますか?
まとめ:コロン演算子
よくできました!このレッスンの重要なポイントは次のとおりです:
a:bは、aからbまで1ずつ(降順の場合は-1ずつ)進む整数シーケンスを作成します- nが0になる可能性がある場合は、
1:nではなくseq_len(n)を使用します - ループでベクトルのインデックスを安全に反復するには
seq_along(x)を使用します - コロン
:は+/-より優先順位が高いため、算術演算を含む範囲には必ず括弧を付けます - 範囲は
c()で組み合わせて、連続していない部分をスライスできます
# Safe loop pattern with seq_along
months <- c('Jan', 'Feb', 'Mar', 'Apr', 'May')
days <- c(31, 28, 31, 30, 31)
for (i in seq_along(months)) {
cat(months[i], ':', days[i], 'days
')
}よくある質問
「整数範囲のためのコロン演算子」レッスンは無料ですか?
はい。「整数範囲のためのコロン演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。
「整数範囲のためのコロン演算子」で何を学びますか?
コロン演算子を使い、整数の連続列をすばやく作成します。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
R Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「整数範囲のためのコロン演算子」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このR Academyレッスンでコードを書いて実行できますか?
はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 整数範囲のためのコロン演算子
- カスタムシーケンスのためのseq()
- 値の繰り返しのためのrep()
- 名前付きベクトルと名前付きシーケンス