0Pricing
R Academy · レッスン

整数範囲のためのコロン演算子

コロン演算子を使い、整数の連続列をすばやく作成します。

「整数範囲のためのコロン演算子」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 整数範囲のためのコロン演算子
  2. カスタムシーケンスのためのseq()
  3. 値の繰り返しのためのrep()
  4. 名前付きベクトルと名前付きシーケンス
← R Academyに戻る