我试图将这个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 ++编写。这就是为什么我没有附上一个完全运行的例子。但如果需要,我可以找到一个。但我认为我只是犯了一个基本的错误,也许我只是搜索了错误的标签。
答案 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)
}