2

行列があり、の各列からサンプルを抽出して、新しい行列Aを作成したいと思います。A例えば:

A = matrix(seq(1,9),3,3)

したがって、最初のブートストラップマトリックスを取得するには、の最初の列A、つまり1,2,3から置換(3回)でサンプリングし、2番目の列(A4,5,6 )から置換(3回)でサンプリングします。そして、の3番目の列A、つまり7,8,9からの置換(3回)でサンプリングします。その後、3つのブートストラップベクトルを組み合わせて、最初のブートストラップ行列B1を再構築します。この手順をB=199回繰り返して、ブートストラップ行列B1、...、B199が使用できるようにします。

私の質問は、どうすればこのプログラムをより速く実行できるかということです。どの関数を使用すればよいですか?私applyは本質的にforループを含むことを知っているので、速度は保証されません。どうdo.callですか?ありがとう!

4

1 に答える 1

5

あなたが使用することができreplicateますapply

A <- matrix(seq(1,9),3,3)

B <- 199

replicate(B, apply(A, 2, sample, replace = TRUE))
于 2012-11-22T16:27:45.587 に答える