for循环列表和子列表到foreach循环

时间:2016-10-09 17:19:53

标签: r loops foreach

我试图将这个for循环放到foreach循环中,最后并行运行它。但我认为我没有得到foreach循环的概念。我尝试使用更简单的循环并且总是卡住。

原始for循环的简化代码:

varName <- rep("name",1000)
testlist <- list()
for(j in 1:1000){

testlist [[j]]              <- list()
testlist [[j]]$UsedAlgo     <- "Name"
testlist [[j]]$UsedPMethod  <- varName[j]
testlist [[j]]$datalists    <- list()
testlist [[j]]$datalists    <- lapply(Dataset[[j]]$data,     
                                function(x){#whateverfunction})

我的foreach循环:

 library(foreach)
 library(doMC)
 registerDoMC(35)
 varName <- rep("name",1000)

 testlist <- foreach(j=1:1000) %dopar% {

 testlist[[j]] <- list()
 testlist[[j]]$UsedAlgo     <- "Name"
 testlist[[j]]$UsedPMethod  <- varName[j]
 testlist[[j]]$patterns     <- list()
 testlist[[j]]$patterns     <- lapply(Dataset[[j]]$data,                
                                      function(x){#whateverfunction})

 }

所以它运行得很好。它输出#whateverfunction返回的列表。但完全忽略了其他变量设置。

返回的列表是一个范围为1:1000的列表,其输出为#whateverfunction。该函数是完整的并返回许多列表,并用C ++编写。这就是为什么我没有附上一个完全运行的例子。但如果需要,我可以找到一个。但我认为我只是犯了一个基本的错误,也许我只是搜索了错误的标签。

1 个答案:

答案 0 :(得分:1)

尝试将testlist[[j]]替换为temp并在结尾添加显式回报:return(temp)

testlist <- foreach(j=1:1000) %dopar% {    
   temp <- list()
   temp$UsedAlgo     <- "Name"
   temp$UsedPMethod  <- varName[j]
   temp$patterns     <- lapply(Dataset[[j]]$data,                
                               function(x){ ... })
   return(temp)
}