首页 > 解决方案 > R 在 parLapply 中使用变量

问题描述

我在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

我怎样才能将这个“Druckfaktor”与 一起使用parLapply

谢谢

标签: rparallel-processing

解决方案


你必须使用clusterExport

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

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

在你的情况下:

Druckfaktor <- 1.3      

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

推荐阅读