如何解决R 中的 foreach 循环为我的数组输出返回 NA 值
我正在尝试在 R 中为我的一个项目应用 foreach 循环,因为 for 循环需要很长时间才能输出。问题是 foreach 循环不更新内存并返回 NA 值。我发现在使用 R 的 bigstatsr 包的 FBM 函数创建矩阵时可以排除这一点,但我有一个处理数组而不是二维矩阵的代码。这是代码
for (z in 1:100){
ft <- array(NA,c(x,y,length(beta),r) #x,beta are defined
foreach (jj = 1:y)%:%
foreach (r in 1:length(beta) %dopar% {
model.1 <- bvar() #a random statitical model function
ft[,jj,r] <- model.1$pred[,1,k] # model.1$pred is itself an array
}
dimnames(ft)[[2]] <- cN
save(ft,file = paste0(foldername,"/",formatC(run,width=2,flag=0),".RData"))
}
现在的问题是 foreach 循环只为我的 ft 数组返回 NA 值,因为它不更新内存。有什么我可以做的事情吗?或者我可以通过将矩阵更改为数组来使用 FBM 函数的某种方式。
解决方法
我猜零件需要时间来拟合模型。
所以你总是可以返回 list(jj,r,ft[,jj,r])
(甚至只是 ft[,r]
)并在以后填充数组。
all_res <- foreach (jj = 1:y) %:%
foreach (r = 1:length(beta)) %dopar% {
model.1 <- bvar() #a random statitical model function
model.1$pred[,1,k] # model.1$pred is itself an array
}
ft <- array(NA,c(x,y,length(beta),r) #x,beta are defined
for (jj in 1:y)
for (r in 1:length(beta))
ft[,r] <- all_res[[jj]][[r]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。