数列の生成 (seq, :)
CoddyのRジャーニー「基礎」セクションの一部 — レッスン 43/78。
これまで、ループ内でシーケンスを作成するために 1:5 を使用してきました。このコロン演算子は素早く簡単ですが、Rにはシーケンスをより細かく制御するための seq() 関数も用意されています。
コロン演算子は、連続した整数のシーケンスを作成します:
print(1:5)
print(10:6)出力:
[1] 1 2 3 4 5
[1] 10 9 8 7 6シーケンスはどちらの方向にも進むことができることに注意してください。最初の数値が大きい場合、カウントダウンします。
seq()関数を使用すると、より柔軟な操作が可能になります。by引数を使用して、ステップサイズを指定できます:
print(seq(2, 10, by = 2))出力:
[1] 2 4 6 8 10これは2から10までの偶数を生成します。
length.outを使用して、必要な数値の個数を指定することもできます。
print(seq(1, 10, length.out = 4))出力:
[1] 1 4 7 10Rは、正確に4つの等間隔の数値を生成するために、間隔を自動的に計算します。どちらのアプローチもループ内でシームレスに動作し、カスタムシーケンスを簡単に反復処理できます。
チャレンジ
簡単入力から3つの数値、start、end、および step を読み取ります。
seq() 関数を使用して、指定された step サイズで start から end までのシーケンスを生成します。次に、for ループを使用してこのシーケンスを反復処理し、各数値の2乗を出力します。
各2乗された値は、print() を使用してそれぞれの行に出力される必要があります。
例えば、入力が 2、10、および 2 の場合、出力は以下のようになります:
[1] 4
[1] 16
[1] 36
[1] 64
[1] 100これは、シーケンス 2, 4, 6, 8, 10 が生成され、各数値が2乗されるためです。
チートシート
コロン演算子 : は、連続した整数のシーケンスを作成します。
1:5 # 1 2 3 4 5 を作成します
10:6 # 10 9 8 7 6 を作成します(カウントダウン)seq() 関数を使用すると、シーケンスをより詳細に制御できます。
# 'by' でステップサイズを指定します
seq(2, 10, by = 2) # 2 4 6 8 10 を作成します
# 'length.out' で値の個数を指定します
seq(1, 10, length.out = 4) # 1 4 7 10 を作成しますコロン演算子と seq() の両方が for ループで使用できます。
for (i in seq(2, 10, by = 2)) {
print(i)
}自分で試してみよう
# 入力を読み込む
con <- file("stdin", "r")
start <- as.numeric(suppressWarnings(readLines(con, n = 1)))
end <- as.numeric(suppressWarnings(readLines(con, n = 1)))
step <- as.numeric(suppressWarnings(readLines(con, n = 1)))
# TODO: 以下にコードを記述してください
# 1. seq() を使用して、start から end まで指定された step でシーケンスを生成します
# 2. for ループを使用してシーケンスを反復処理します
# 3. print() を使用して各数値の 2 乗を出力しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。