Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
foreach实现在R中崩溃并生成错误_R_Foreach_Doparallel - Fatal编程技术网

foreach实现在R中崩溃并生成错误

foreach实现在R中崩溃并生成错误,r,foreach,doparallel,R,Foreach,Doparallel,我是在R中使用foreach包的新手,需要一些关于 我的密码 我有一个数据帧,它有location.Id和iterationID,如下所示 exp_df <- data.frame(location.Id = sample(1:10, 1000, replace = T), iterationID = 1:1000) 我的目标是,对于每一行的exp\u df,我要选择它是什么location.Id,然后执行操作 使用x1、x2和x3进行如下计算

我是在R中使用
foreach
包的新手,需要一些关于 我的密码

我有一个数据帧,它有
location.Id
iterationID
,如下所示

exp_df <- data.frame(location.Id = sample(1:10, 1000, replace = T),
                      iterationID = 1:1000)
我的目标是,对于每一行的
exp\u df
,我要选择它是什么
location.Id
,然后执行操作 使用
x1
x2
x3
进行如下计算

library(foreach)
library(doParallel)

myClusters <- makeCluster(6)  
registerDoParallel(myClusters)

results <- 
foreach(i = 1:nrow(exp_df)) %dopar% 
  
{
 
  library(data.table) 
  library(dplyr)
  
  temp <- exp_df[i, ]
 
  mydat <- fread('dat.csv')[location.Id == temp$location.Id] 

  mydat <- mydat %>% dplyr::mutate(finalVal = x1 + x2 + x3)
  
  return(mydat)
}

stopCluster(myClusters)
产生上述错误的原因是什么


谢谢

我做了一件似乎有效的事情,不知道是否有人对此有意见

我把我的
exp\u df
分成小块

splitdf <- split(exp_df, (as.numeric(rownames(exp_df))-1) %/% 50) 

splitdf我做了一件似乎有效的事情,不知道是否有人对此有意见

我把我的
exp\u df
分成小块

splitdf <- split(exp_df, (as.numeric(rownames(exp_df))-1) %/% 50) 

splitdf是内存问题吗?我不知道这就是我问的原因。是什么导致的?是记忆问题吗?我不知道这就是我问的原因。是什么导致的?
splitdf <- split(exp_df, (as.numeric(rownames(exp_df))-1) %/% 50) 
final_result <- list()
for(l in 1:length(splitdf)) {

    exp_df <- splitdf[[l]]

    myClusters <- makeCluster(6)  
    registerDoParallel(myClusters)

    results <- foreach(i = 1:nrow(exp_df)) %dopar% 

    {

      library(data.table) 
      library(dplyr)

      temp <- exp_df[i, ]

      mydat <- fread('dat.csv')[location.Id == temp$location.Id] 

      mydat <- mydat %>% dplyr::mutate(finalVal = x1 + x2 + x3)

     return(mydat)
  }

stopCluster(myClusters)

final_result[[l]]  <- rbindlist(result)
}