2

doParallelライブラリを使用しているときに、この奇妙なエラーが発生しました。システムはこれをスローします

" Error in { : task 1 failed -could not find function "%dopar%"

具体的には、これが私がしたことです

library(doParallel)
cl <- makeCluster(4)
registerDoParallel(cl)
# Read the data
coin95 <-read.csv('~/Documents/coin95.csv')
coin95 <- coin95[,!(names(coin95) %in% c("X"))]
coin95[c("Person")] <- sapply(coin95[c("Person")],as.character)
# create the name list
coin95_name <- as.character(coin95$Person)  
coin95_name <- unique(coin95_name)
n <- as.numeric(length(coin95_name))

# the average counting process

ntw <- function(now){
  foreach (Ii = coin95_name,.combine = "+",.export = c("coin95","n")) %dopar% {
    time <-subset(coin95, subset = coin95$Person == Ii)$duration
    stepfun(time,seq(0,length(time)))(now)/n
  }
}

# the average cumulative hazard
lambda <- function(now,params){
  b <- params[1]
  sigma <- params[2]
  mu <- params[3]
  xi <- params[4]
  beta1 <- params[5]
  beta2 <- params[6]

  k <- function(spread){
    L0 <- (1+(spread -mu)*xi/sigma)^(-1/xi)
    return(L0)
  }

  foreach(Ii = coin95_name,.combine = "+",.export = c("coin95","n")) %dopar% {
    time <- subset(coin95, subset = coin95$Person == Ii)$duration
    noncov <- subset(coin95, subset = coin95$Person == Ii)$noncovered
    reim <- subset(coin95, subset = coin95$Person == Ii)$reimbursement
    (b*now+sum( exp(-k(now-time[(time < now)])+beta1*noncov[(time < now)]+beta2*reim[(time <now)]) ))/n

  }

}

これまでのところ、すべてが良好です。2 つの関数ntwを作成lambdaし、foreach. 彼らは完璧に機能しました。

次に、次の関数も使用して 3 番目の関数を作成しますforeach

# the distance
Time <- coin95$duration
Time <- sort(as.double(Time))

jl <- function(params){
       res<-foreach(Ii = Time,.combine = "rbind",.export = c("ntw","lambda")) %dopar% {
         (ntw(Ii)-ntw(Ii-1e-7)) * (ntw(Ii)- lambda(Ii,params))^2
         }
       return(sqrt(sum(res))) 
     }

guess<-c(0.0,1.3333,0.0,0.1,-1.2,3e-3)

タイプjl(guess):

> jl(guess)
 Show Traceback

 Rerun with Debug
 Error in { : task 1 failed -could not find function "%dopar%" 

何がうまくいかないのですか?

4

1 に答える 1