Rで繰り返しを含む数列の生成(rep関数、seq関数)

Rで、「123123123...」とか「111222333...」とか「13579...」(奇数)とか「02468...」(偶数)とか、そんな感じの繰り返しを含むような数字の列を作りたい場合、1行でさらっと書けてしまいます。

【繰り返し】
> rep(7, 10)
 [1] 7 7 7 7 7 7 7 7 7 7

「○を○個だけrepeat」って感じで。


【1ずつ増加】
> 1:7
 [1]  1  2  3  4  5  6  7

コロンでつなげば「○から○までインクリメント」


【○ずつ増加】
> seq(1, 7, 2)
[1]  1  3  5  7

sequence関数で、「○から○まで○ずつ増加」


【1ずつ増加する数列を繰り返す】
 > rep(1:7, 3)
 [1] 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7

repeat関数の第1引数に、「1ずつ増加する数列」を指定すればOK。


【○ずつ増加する数列を繰り返す】
> rep(seq(1,7,2), 3)
 [1] 1 3 5 7 1 3 5 7 1 3 5 7

repeat関数の第1引数に、「○ずつ増加する数列」を指定すればOK。


【それぞれ○個】 
> rep(1:7, each=3)
 [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7


【○ずつ増加、それぞれ○個】
> rep(seq(1,7,2), each=3)
 [1] 1 1 1 3 3 3 5 5 5 7 7 7

コロンで指定していたところを、repにするだけなので簡単ですね。


【○ずつ増加、○回繰り返す、それぞれ○個】
> rep(seq(1,7,2), 2, each=3)
 [1] 1 1 1 3 3 3 5 5 5 7 7 7 1 1 1 3 3 3 5 5 5 7 7 7

rep関数の第2引数は繰り返し回数で、「rep(seq(1,7,2), times=2, each=3)」と書いても同じ意味です。こう書いた方が、勘違いは少なそうですね。

コメント

このブログの人気の投稿

Rのグラフで軸の目盛りの刻み幅を変更する方法

reorderを使ってggplotの棒グラフの並び順を降順にする方法