R在parLapply中使用varibales

时间:2018-06-06 09:30:57

标签: r parallel-processing

我在使用变量" Druckfaktor"时遇到问题。在parLapply

我的代码如下所示:

  Druckfaktor <- 1.3      

  no_cores <- detectCores()-1
  cl <- makeCluster(no_cores)

  S <- parLapply(cl,m.list,function(x) {
        s <- diag(x[2:4])
        s[1,2] <- s[2,1] <- x[5]
        s[2,3] <- s[3,2] <- x[6]
        s[3,1] <- s[1,3] <- x[7]

        VD <- eigen(s)
        V <- VD$vectors
        D <- VD$values
        D[D<0] <- D[D<0]/Druckfaktor
        s <- V %*% diag(D) %*% t(V)
        c(x[1],s[1,1],s[2,2],s[3,3],s[1,2],s[2,3],s[3,1])
  })
  stopCluster(cl)code here

不幸的是,该功能回答:

  

Error in checkForRemoteErrors(val) : 11 nodes produced errors; first error: Objekt 'Druckfaktor' nicht gefunden

我如何使用这个&#34; Druckfaktor&#34;和parLapply一起?

由于

1 个答案:

答案 0 :(得分:1)

您必须使用clusterExport

  

clusterExport(cl = NULL, varlist, envir = .GlobalEnv)

     

clusterExport将varlist中命名的变量的主R进程上的值分配给每个节点的全局环境(也称为“工作空间”)中的相同名称的变量。从中导出变量的主服务器上的环境默认为全局环境。

在你的情况下:

Druckfaktor <- 1.3      

no_cores <- detectCores()-1
cl <- makeCluster(no_cores)
clusterExport(cl, c("Druckfaktor"))
[...]