R

トップページ
Google
WWWを検索
サイト内を検索

何かと要素が同一パターンの繰り返しになっているベクトルや行列を作る事があります。ループでも作れますが、速度的にも見通し的にも生成関数を使った方が望ましいです。

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