%dopar%
%dopar%
패키지를 사용하여 doSNOW
패키지를 사용하여 foreach
패키지에서 로컬로 작업을 실행하고 있습니다 (Windows 컴퓨터에서 실행 중임) . 이전에 여러 번 해본 적이 있는데, 무의미한 foreach
루프를 내부에 %do%
(즉 비 병렬) 루프를 사용하기 전까지는 제대로 작동합니다. 해결책을 간단한 for
또는 (l/s)apply
와 내부 foreach
교체외부 % dopar % 및 내부 % do %가 포함 된 관련없는 중첩 된 foreach
require(foreach)
require(doSNOW)
cl<-makeCluster(5)
registerDoSNOW(cl)
for(stepi in 1:10) # normal outer for
{
foreach(rc=1:5) %dopar% # the time consuming stuff in parallel (not looking to actually retrieve any data)
{
aRandomCounter = -1
if(1 > 0)
{
for(batchi in 1:20)
{
anObjectIwantToCreate <- foreach(qrc = 1:100, .combine=c) %do%
{
return(runif(1)) # I know this is not efficient, it is a placeholder to reproduce the issue
}
aRandomCounter = aRandomCounter + sum(anObjectIwantToCreate > 0.5)
}
}
return(aRandomCounter)
}
}
stopCluster(cl)
있다 : 내 컴퓨터에 문제를 복제하는 몇 가지 코드를 여기에
Error in { : task 1 failed - "could not find function "%do%"" 3 stop(simpleError(msg, call = expr)) 2 e$fun(obj, substitute(ex), parent.frame(), e$data) 1 foreach(rc = 1:5) %dopar% {
aRandomCounter = -1
if (1 > 0) {
for (batchi in 1:20) { ...
됩니다 : 그럼 R은 나에게 (역 추적 포함) 오류를 제공합니다 . 그러나 내부에서이 작업을 수행하는 방법이 있습니까 foreach
왜 처음에는 오류가 있습니까?
SO에 게시 된 코드에 'rm (list = ls())'문을 포함시키는 것은 매우 무례한 것으로 간주됩니다. 당신을 도우려고하는 누군가가 실수로 전체 세션을 지울 수 있으며 다시 작성하는 데 몇 시간이 걸릴 수 있습니다. 이것이 내가 주석 처리 한 이유입니다. 이것을 다시하지 마십시오. – jlhoward