何かと要素が同一パターンの繰り返しになっているベクトルや行列を作る事があります。ループでも作れますが、速度的にも見通し的にも生成関数を使った方が望ましいです。
1 rep
入力パターンを一定回数繰り返すrep
が基本です。
rep(1:3, 3)
[1] 1 2 3 1 2 3 1 2 3
入力パターンのそれぞれの要素を一定回数繰り返すこともできます。
rep(1:3, each=3)
[1] 1 1 1 2 2 2 3 3 3
2
replicate
ベクトルではなく行列をつくる関数もあります。
replicate(3, 1:3)
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
標準の結果はmatrix(rep(1:3, 3), 3, 3)
と同様です。速度的にはreplicate
の方が速いです。
引数にsimplify=FALSE
をつけるとリストが戻ってきます。
replicate(3, 1:3, simplify=FALSE)
[[1]]
[1] 1 2 3
[[2]]
[1] 1 2 3
[[3]]
[1] 1 2 3