使用foreach的问题

时间:2015-05-06 01:56:03

标签: r server batch-processing parallel-foreach

我有一个关于使用foreach进行并行仿真的问题,我非常感谢您的帮助,因为我花了几个小时和几个小时而且我一直在收到错误。

我使用foreach()进行模拟研究,在每次迭代中我运行一个函数,该函数本身有一些"常规"循环。当我顺序运行它时,它完全正常。在Linux服务器上,当我在R中并行使用foreach运行它时,它工作正常,但只要我在批处理模式下使用" nohup R CMD BATCH"命令,它开始返回错误。我为每次模拟手动设置种子数,这意味着无论是在R内并行运行,在批处理模式下并行运行,在R内部顺序运行,我的代码基本上都运行在相同的模拟数据上,这样如果一种方式不能产生任何错误,其他人不应该导致错误,但奇怪的是,情况并非如此。有谁有同样的挑战?

我花了好几个小时,处理异常处理但没有发生任何事情。

这是我的代码:

 dataSim <- function(seedNum, n, mi, beta0FE, beta1, beta0RE){

 # Setting the seed number:
 set.seed(seedNum)

 # Generating covariates:
 x <- rnorm(n, mean = 0, sd = 1)

 # Generating Y:
 data <- data.frame(id = rep(1:n, each = mi), x = rep(x, each = mi),     
                    beta0_RE = rep(beta0RE, each = mi))
 etaTmp <- data$beta0_RE + beta0FE + beta1*data$x
 piTmp <- exp(etaTmp)/(1 + exp(etaTmp))
 data$Y <- sapply(piTmp, rbinom, n = 1, size = 1)  
 return(data)
}

# Data Simulation Parameters:
n <- 100
mi <- 30
beta0FE <- 0.3
beta1 <- 1
beta0RE <- rnorm(n, 0, 1)

# Simulation Parameters:
nSim <- 10000
nIter <- 4000

LME_Freq_Fun <- function(data){
fit.LME <- try(glmmPQL(Y ~ x, random = ~ 1 | id, 
               family = binomial, data = data))
print(class(fit.LME)[1])
if (class(fit.LME)[1] == "try-error"){
  return(list(coef.FE.LME = rep(NA, 3),
            coef.RE.LME = rep(NA, n)))
}else{
  return(list(coef.FE.LME = fit.LME$coefficients$fixed,
            coef.RE.LME = fit.LME$coefficients$random$id))
 }
}

LME_Freq_RSLT <- foreach (i = 1:nSim) %dopar%{
 print(paste("i=", i))
 print("-------")
 data <- dataSim(i, n, mi, beta0FE, beta1, beta0RE)
 LME_Freq_Fun(data)
}

  # Extracting elements from foreach:
  Coef.Fixed.LME <- t(sapply(1:nSim ,function (i) 
                                     return(LME_Freq_RSLT[[i]][[1]] )))
  Coef.Rand.LME <- t(sapply(1:nSim ,function (i) 
                                     return(LME_Freq_RSLT[[i]][[2]] )))

没有&#34;尝试&#34;,我一直得到:      任务3527失败 - &#34; $运算符对原子向量无效&#34;

通过尝试,我的Coef.Fixed.LME变得非常奇怪所有元素&#34; numeric.2&#34; !

0 个答案:

没有答案
相关问题