我正在尝试使用 snowFall 来使用集群加速我的代码。我的代码的简化版本是
library(snowfall)
pbsnodefile = Sys.getenv("PBS_NODEFILE")
machines <- scan(pbsnodefile, what="")
machines
nmach = length(machines)
nmach
sfInit(parallel=TRUE,type='SOCK',cpus=nmach,socketHosts=machines)
examp <- function(W,Y){
guess=lm(Y~W)
return(guess$coef)
}
makedat <- function(N){
###Generating a dataset.
#Covariate vector
W <- mvrnorm(N,mu = rep(0,2),Sigma = matrix(c(1,0.8,0.8,1),nrow = 2))
Y <- rnorm(N)
result <- data.frame(W = W,Y= Y)
return(result)
}
sfExport("examp")
sfExport("makedat")
sfLibrary(MASS)
wrapper <- function(sim){
data <- makedat(100)
result <- examp(W = cbind(data[,1],data[,2]),Y = data[,3])
return(result)
}
nSim <- 2
result = sfLapply(1:nSim,wrapper)
save(result)
sfStop()
这样做的目的是只输出 lm 对象的系数(guess$coef),但我得到的输出是整个 lm 对象。所以在我看来,$ 不起作用。稍后在我的代码中(不包括在这里我遇到了同样的问题,即 $ 似乎没有工作)。非常感谢所有建议。