Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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
在%dopar%中尝试两次使用函数Get()时,R中出现Get错误_R_Foreach_Get_Doparallel - Fatal编程技术网

在%dopar%中尝试两次使用函数Get()时,R中出现Get错误

在%dopar%中尝试两次使用函数Get()时,R中出现Get错误,r,foreach,get,doparallel,R,Foreach,Get,Doparallel,我有一个名为“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

我有一个名为“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)
库(双并行)

myCluster为什么粘贴(“数据帧”)
?为什么不
“数据帧”
?虽然我对
foreach
没有太多经验,但我猜想,任何自动解析表达式以确定要传输哪些变量的尝试都不会处理字符串,即使它们在明显的
get
函数中。再说一次,我可能错了。你能用
data\u frame
(没有字符串,没有引号,没有
get
)替换
get(…)
?我可以使用data\u frame,它会返回正确的结果,但我正在尝试从外部源动态读取数据帧列表,我想使用数据帧的名称,这样我就不用重复代码了。我试图把问题提炼出来,使之更简单。
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,])), get('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)