R Ошибка в checkForRemoteErrors (val): 4 узла выдали ошибки;Первая ошибка: «цитата (1:25)» - PullRequest
0 голосов
/ 17 октября 2018

Когда я использую пакет 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)

Спасибо за ваши ответы ~

...