我有一个矩阵A
,我想从A
的每一列中提取样本并构建新的矩阵。例如:
A = matrix(seq(1,9),3,3)
为了获得第一个自举矩阵,我将从A
的第一列进行替换(3次),即1,2,3,从第二列中替换(3次)的样本A
,即4,5,6,以及来自A
第三列的替换样本(3次),即7,8,9。之后,我通过组合三个自举向量重新构建第一个自举矩阵B1。我将重复此过程B = 199次,以便引导矩阵B1,...,B199可用。
我的问题是,如何让这个程序运行得更快?我应该使用哪种功能?我知道apply
基本上涉及for
循环,因此无法保证速度。 do.call
怎么样?谢谢!
答案 0 :(得分:5)
您可以使用replicate
和apply
:
A <- matrix(seq(1,9),3,3)
B <- 199
replicate(B, apply(A, 2, sample, replace = TRUE))