Get error in R when try to use function get() twice in %dopar%

52 Views Asked by At

I have a data frame with name 'data_frame' which I want to use in computations with the library doParallel. I try the following:

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)

But I get the error

Error in { : task 1 failed - "object 'data_frame' not found" Timing stopped at: 0.18 0.06 1.45

However it works if I use:

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)

Or

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)

Does anyone have any experience from this problem?

Regards Dan

0

There are 0 best solutions below