I have a matrix A
, and I would like to draw samples from each column of A
and construct new matrices. For example:
A = matrix(seq(1,9),3,3)
so to get the 1st bootstrap matrix, I would sample with replacement (3 times) from the first column of A
, i.e. 1,2,3, sample with replacement (3 times) from the second column of A
, i.e. 4,5,6, and sample with replacement (3 times) from the third column of A
, i.e. 7,8,9. After that, I re-construct the 1st bootstrap matrix B1 by combining the three bootstrap vectors. I will repeat this procedure for B=199 times, so that bootstrap matrices B1,...,B199 will be available.
My question is, how can I make this program run faster? Which function should I use? I know apply
involves essentially for
loops so the speed is not guaranteed. How about do.call
? Thanks!
You can use
replicate
andapply
: