微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 中的 foreach 循环为我的数组输出返回 NA 值

如何解决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 举报,一经查实,本站将立刻删除。