尝试在%dopar%中两次使用函数get时在R中获得错误

问题描述

我有一个名称为“ data_frame”的数据框,我想在使用doParallel库进行计算时使用它。我尝试以下方法

library(doParallel)
myCluster <- makeCluster(detectCores()-1,type = "PSOCK") # type of cluster
registerDoParallel(myCluster)


system.time({
  list_input_tmp <- foreach(i = 1:nrow(get('data_frame'))) %dopar% {
    temp = list(function1(get('data_frame')[i,]),get('data_frame')[i,])
  }
})

stopCluster(myCluster)

但是我得到了错误

{中的错误: 任务1失败-“未找到对象'data_frame'”时间停止在:0.18 0.06 1.45

但是如果我使用它,它会起作用:

library(doParallel)
myCluster <- makeCluster(detectCores()-1,type = "PSOCK") # type of cluster
registerDoParallel(myCluster)


system.time({
  list_input_tmp <- foreach(i = 1:nrow(get('data_frame'))) %dopar% {
    temp = list(function1(data_frame[i,])),])
  }
})

stopCluster(myCluster)

library(doParallel)
myCluster <- makeCluster(detectCores()-1,type = "PSOCK") # type of cluster
registerDoParallel(myCluster)


system.time({
  list_input_tmp <- foreach(i = 1:nrow(get(paste0('data_',list_input[3])))) %dopar% {
    temp = list(function1(get('data_frame')[i,data_frame[i,])
  }
})

stopCluster(myCluster)

有人对这个问题有经验吗?

关于丹

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)