によって呼び出される関数の中でのforeach%のdoparの%での問題:呼び出された関数は、そのように見えるR - エラーが発生するforeach%dopar%OPTIMから構築を含む関数を呼び出すOPTIM
> workers <- startWorkers(6) # 6 cores
>
> registerDoSMP(workers)
>
> t0 <- Sys.time()
>
> optim(w,maxProb2,control=list(fnscale=-1))
>
> Error in { : task 1 failed - "unused argument(s) (isPrebuilt = TRUE)"
>
> Sys.time()-t0
>
> Time difference of 2.032 secs
>
> stopWorkers(workers)
:
> maxProb2 <- function(wp) {
>
> r <- foreach (i=s0:s1, .combine=c) %dopar% { pf(i,x[i,5],wp,isPrebuilt=TRUE) }
>
> cat("w=",wp,"max=",sum(r),"\n")
>
> sum(r)
>
> }
pfは他の関数であり、xは事前計算された要素の静的なテーブルです。
がまた一度だけ最適化されるように関数を呼び出すことは、同じエラーが発生:
:> workers <- startWorkers(6) # 6 cores
>
> Warning message:
> In startWorkers(6) : there is an existing doSMP session using doSMP1
>
> registerDoSMP(workers)
>
> maxProb2(w)
> Error in { : task 1 failed - "unused argument(s) (isPrebuilt = TRUE)"
>
> stopWorkers(workers)
奇妙何を単一の時間(OPTIMは、同じ機能を何度もcalles)を直接呼び出されたときに、同じコードが正常に動作します
%dop%の代わりに%do%を使用すると、呼び出される関数(maxProb2)は正常に動作します。
foreach%dopar%の構造を含む関数を正しく呼び出すにはどうすればよいですか?
UPDATE 2011-07-17:
私はprobfにPF機能の名前を変更したが、問題が残っています。
probf関数がスクリプトで定義されています。一部の外部パッケージでは定義されていません。
2つのノート:OS:Windows 7の、IDE:革命解析エンタープライズ4.3
> workers <- startWorkers(workerCount = 3)
>
> registerDoSMP(workers)
>
> maxProb2(w)
>
Error in { : task 1 failed - "could not find function "probf""
質問には常に正確なエラーメッセージを含めてください。 –