当我使用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)
感谢您的回答〜