R checkForRemoteErrors(val)中的错误:4个节点产生了错误;第一个错误:“ quote(1:25)”

时间:2018-10-17 09:41:44

标签: r parallel-processing snow

当我使用Snow软件包进行并行计算时,标题出现错误,找不到相似的标题。

首先,我使用lapply运行代码,一切正常。但是,当我使用parLapply时,错误如下:checkForRemoteErrors(val)中的错误:4个节点产生了错误;第一个错误:“ quote(1:25)”

所有代码如下:

library(snow)


sub_mat <- function(mat, r, n, p){
  mat_ctr <- mat - matrix(1,n,1)%*%matrix(mat[r,],1,p)
  mat_ctr <- mat_ctr[-r,]
  A <- tcrossprod(mat_ctr)
  return(A)
}


one_pcov <- function(r, X, Y, n, p, q){
  mx <- sub_mat(X, r, n, p)
  my <- sub_mat(Y, r, n, q)
  xy_ele <- mx*my

  out <- sum(xy_ele)/n^2
  return(out)
 }

lapply函数:

pcov1 <- function(X,Y){

  n <- nrow(X)
  p <- ncol(X)
  q <- ncol(Y)
  r <- 1:n

  return(lapply(r, FUN = function(i) one_pcov(i, X=X, Y=Y, n=n, p=p, q=q)))
}

parLapply函数:

pcov2 <- function(X, Y, f){

  n <- nrow(X)
  p <- ncol(X)
  q <- ncol(Y)
  r <- 1:n

  cl <- makeCluster(4, type = "SOCK")
  environment(f) <- .GlobalEnv
  parLapply(cl, r, f, X=X, Y=Y, n=n, p=p, q=q)

}

同时运行它们:

X <- matrix(rnorm(100*100,1),100,100)
Y <- matrix(rnorm(100*100,1),100,100)
pcov1(X, Y)
pcov2(X, Y, one_pcov)

感谢您的回答〜

0 个答案:

没有答案