簡単な数値ベクトルを生成します。

問題(1) 連番の数値ベクトルを生成

以下のような、10から1の数値ベクトルを生成してください。

出力例

## [1] 10  9  8  7  6  5  4  3

解答例1

x <- 10:3
x
## [1] 10  9  8  7  6  5  4  3

数字の連番を生成するには、1:10のように:で数値をつなげるとできます。またこの連番は、左の数値から右の数値へと1ずつ変化させていきます。この挙動については、?":"を実行してヘルプを参照してみてください。

問題(2) 一定の間隔をもつ数値ベクトルを生成1

以下のような、5から30までの、5ずつの数値ベクトルを生成してください。

出力例

## [1]  5 10 15 20 25 30

解答例1

seq(5, 30, by = 5)
## [1]  5 10 15 20 25 30

seq関数は、一定の間隔を持つ数値ベクトルを返します。第一引数(from=)で開始値を、第二引数(to=)で終了値(最大値)を返します。また、by=引数で間隔を指定します。

一番優先されるのは第一引数のfrom=で、この値から必ずスタートします。そしてby=で指定した間隔にしたがって値を出力し、その値がto=の値を超えたら出力しなくなります:

seq(5, 32, by = 5)
## [1]  5 10 15 20 25 30

もしby=を指定しなかった場合、1ずつ増加した値が返ってきますので、from:toと同じとなります。

問題(3) 一定の間隔をもつ数値ベクトルを生成2

以下のような、5から始まって3ずつ増加する、長さ10の数値ベクトルを生成してください。

出力例

##  [1]  5  8 11 14 17 20 23 26 29 32

解答例1

seq(5, by = 3, length.out = 10)
##  [1]  5  8 11 14 17 20 23 26 29 32

問題2同様、seq関数を使用します。ただ今回は、初期値と間隔値とベクトル長が指定してあります。この場合、length.out=引数でベクトル長を指定します。

なお、このseq関数で、from=``to=``by=``length.out=の4つの引数を同時に指定するとエラーが出ます。理由はぜひ考えてみてください。それ以外の3つ以下の組み合わせを使えば、色々なパターンが作れます。ぜひ色々試してみてください。

問題(4) 一定の範囲の整数からランダムに数値ベクトルを生成

以下のような、1から5までの整数からランダムに20個取得した数値ベクトルを生成してください。

出力例

sample(1:5, 20, replace = TRUE)
##  [1] 5 3 5 4 3 5 5 2 4 5 4 1 4 4 3 2 1 4 1 1