fast function for generating bootstrap samples in

2019-02-26 04:08发布

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!

1条回答
做自己的国王
2楼-- · 2019-02-26 05:02

You can use replicate and apply:

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

B <- 199

replicate(B, apply(A, 2, sample, replace = TRUE))
查看更多
登录 后发表回答