我想知道是否有办法让R中的foreach包使用预先分配的结构来放置结果.基本上它涉及很多大型数据集上的小型linalg操作.
我的非foreach原始代码是类似的
results <- rep(NA,m*l*[big.number])
dim(results) <- c(m,l,[big.number])
for (i in 1:m){
for (j in 1:l){
results[i,j,] <- function(j,i,data)
}
}
我想使用foreach和doMC来并行化这个,但测试运行真的很慢,我认为这是rbind和c所做的持续数据移动.
最佳答案 我有幸与abind()(来自图书馆(abind)).例如,假设我有一个返回矩阵的模拟函数,我想要一个大数组,我可以使用abind(,沿= .5)来获取要绑定到数组中的矩阵列表,并添加一个新的维度.所以你可能喜欢这样的东西:
myfun<-function(arr){abind(arr,along=.5)}
foreach(1:n.sims,.combine=myfun) ....