<html><head></head><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:13px"><div id="yui_3_16_0_1_1445423446749_5056"><span id="yui_3_16_0_1_1445423446749_5761"><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif" id="yui_3_16_0_1_1445423446749_5917">Clécio,</font></span></div><div id="yui_3_16_0_1_1445423446749_5056"><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif"><br></font></span></div><div id="yui_3_16_0_1_1445423446749_5056"><span id="yui_3_16_0_1_1445423446749_5354"><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif" id="yui_3_16_0_1_1445423446749_5940">Não sei exatamente a razão da mensagem de erro, mas repare que você cria a matriz tetaM, depois atribui à tetaM o resultado do foreach, e *dentro* do foreach você ainda tenta atribuir à coluna k de tetaM os coeficientes da regressão. Imagino que seja alguma coisa aí no meio que esteja causando o erro.</font></span></div><div id="yui_3_16_0_1_1445423446749_5056"><span><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif"><br></font></span></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr"><span id="yui_3_16_0_1_1445423446749_5494" class=""><font face="HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif" id="yui_3_16_0_1_1445423446749_5918">De toda forma, o foreach com o argumento <i id="yui_3_16_0_1_1445423446749_5978">.combine=cbind</i> já retornaria uma matriz p por M. Segue abaixo uma versão simplificada e funcional do seu código:</font></span></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr"><span class=""><br></span></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5826"># Criação dos cores em paralelo:</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">library(doParallel)</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">cl <- makeCluster(3) </div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">registerDoParallel(cl)</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><br id="yui_3_16_0_1_1445423446749_5768" class=""></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><br id="yui_3_16_0_1_1445423446749_5771" class=""></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""># Código</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""># Modelo Normal<br></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">n <- 100</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5857">M <- 1e4</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">p <- 2</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5858">X <- matrix(1, n, p)</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">X[, 2] <- runif(n)</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">beta0 <- matrix(c(5, 1), 2, 1)</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">sigma2 <- 1</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><br id="yui_3_16_0_1_1445423446749_5786" class=""></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><br></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""># Simulação<br></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5859">strt <- Sys.time()</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5850">tetaM <- foreach(k = 1:M, .combine = cbind) %dopar% { </font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5860"> erro <- rnorm(n, 0, sigma2)</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5851"> y <- X %*% beta0 + erro</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5831"> lm(y ~ X-1)$coefficients</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">}</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5829">print(Sys.time()-strt)</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><br id="yui_3_16_0_1_1445423446749_5800" class=""></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class="">dim(tetaM)</div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr"><span class=""></span></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr" class=""><font id="yui_3_16_0_1_1445423446749_5828">tetaM[, 1:100]</font></div><div id="yui_3_16_0_1_1445423446749_5056" dir="ltr"><span class=""><br></span></div><br> <div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 13px;" id="yui_3_16_0_1_1445423446749_5075"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1445423446749_5074"> <div dir="ltr" id="yui_3_16_0_1_1445423446749_5083"> <hr size="1" id="yui_3_16_0_1_1445423446749_5720"> <font size="2" face="Arial" id="yui_3_16_0_1_1445423446749_5129"> <b><span style="font-weight:bold;">De:</span></b> Clécio da Silva Ferreira <clecio.ferreira@ufjf.edu.br><br> <b><span style="font-weight: bold;">Para:</span></b> r-br@listas.c3sl.ufpr.br <br> <b id="yui_3_16_0_1_1445423446749_5980"><span style="font-weight: bold;" id="yui_3_16_0_1_1445423446749_5979">Enviadas:</span></b> Quarta-feira, 21 de Outubro de 2015 9:03<br> <b id="yui_3_16_0_1_1445423446749_5982"><span style="font-weight: bold;" id="yui_3_16_0_1_1445423446749_5981">Assunto:</span></b> [R-br] Problemas em foreach e parallel<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_1_1445423446749_5073"><br><div id="yiv4105123120"><div dir="ltr" id="yui_3_16_0_1_1445423446749_5072"><div id="yui_3_16_0_1_1445423446749_5353">Prezados, estou tentando utilizar as ferramentas de paralelo em R para Windows. Acontecem dois problemas:</div><div id="yui_3_16_0_1_1445423446749_5082">1. Às vezes parece que os workers não 'ativam', dando a mensagem de erro abaixo. Note que não roda, pois o tetaM continua como matriz de 0s. Eu às vezes tenho de colar as funções mais de uma vez para então 'ligar'.</div><div id="yui_3_16_0_1_1445423446749_5071"><br></div><div id="yui_3_16_0_1_1445423446749_5130">2. Neste exemplo, eu faço replicações de amostras de um MRLM (só um treinamento) e estimo o modelo para cada amostra. Independente da quantidade de amostras que eu gero (M amostras), ele sempre me devolve com 3 resultados a menos. 3 é o nº de cores que eu coloquei.</div><div id="yui_3_16_0_1_1445423446749_5131"><br></div><div id="yui_3_16_0_1_1445423446749_5352">Alguém tem alguma ideia da origem do problema? Ah, eu fiz para outros modelos que trabalho e ocorrem os mesmos problemas</div><div id="yui_3_16_0_1_1445423446749_5351"><br></div><div id="yui_3_16_0_1_1445423446749_5132"><br></div><div id="yui_3_16_0_1_1445423446749_5350"># Criação dos cores em paralelo:</div><div id="yui_3_16_0_1_1445423446749_5305"><div id="yui_3_16_0_1_1445423446749_5304">library(doParallel)</div><div id="yui_3_16_0_1_1445423446749_5321">library(foreach)</div><div id="yui_3_16_0_1_1445423446749_5349">cl<-makeCluster(3, type="SOCK") <br></div><div id="yui_3_16_0_1_1445423446749_5348">library(doSNOW)</div><div id="yui_3_16_0_1_1445423446749_5333">registerDoSNOW(cl)</div></div><div id="yui_3_16_0_1_1445423446749_5326"><br></div><div id="yui_3_16_0_1_1445423446749_5301"><br></div><div id="yui_3_16_0_1_1445423446749_5479"># Código</div><div id="yui_3_16_0_1_1445423446749_5480"><br></div><div id="yui_3_16_0_1_1445423446749_5170"><div id="yui_3_16_0_1_1445423446749_5281"># Modelo Normal</div><div id="yui_3_16_0_1_1445423446749_5224">n=100</div><div id="yui_3_16_0_1_1445423446749_5327">M=10</div><div id="yui_3_16_0_1_1445423446749_5323">p=2</div><div id="yui_3_16_0_1_1445423446749_5174">X=matrix(1,n,p)</div><div id="yui_3_16_0_1_1445423446749_5173">X[,2]=runif(n)</div><div id="yui_3_16_0_1_1445423446749_5172">beta0=matrix(c(5,1),2,1)</div><div id="yui_3_16_0_1_1445423446749_5171">sigma2=1</div><div id="yui_3_16_0_1_1445423446749_5329"><br></div><div id="yui_3_16_0_1_1445423446749_5169">yM=matrix(0,n,M)</div><div id="yui_3_16_0_1_1445423446749_5331">for (k in 1:M) { </div><div id="yui_3_16_0_1_1445423446749_5514">erro=rnorm(n,0,sigma2) </div><div id="yui_3_16_0_1_1445423446749_5265">yM[,k]=X%*%beta0+erro</div><div id="yui_3_16_0_1_1445423446749_5419">}</div><div id="yui_3_16_0_1_1445423446749_5303"><br></div><div id="yui_3_16_0_1_1445423446749_5177"><br></div><div id="yui_3_16_0_1_1445423446749_5285">tetaM=matrix(0,p,M)</div><div id="yui_3_16_0_1_1445423446749_5219">strt<-Sys.time()</div><div id="yui_3_16_0_1_1445423446749_5420">tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { </div><div id="yui_3_16_0_1_1445423446749_5421">y=yM[,k]</div><div id="yui_3_16_0_1_1445423446749_5324">tetaM[,k]=lm(y~X-1)$coefficients</div><div id="yui_3_16_0_1_1445423446749_5558">#sgn.logL(teta3,y,X)</div><div id="yui_3_16_0_1_1445423446749_5287">}</div><div id="yui_3_16_0_1_1445423446749_5199">print(Sys.time()-strt)</div><div id="yui_3_16_0_1_1445423446749_5198"><br></div><div id="yui_3_16_0_1_1445423446749_5197">tetaM</div></div><div id="yui_3_16_0_1_1445423446749_5196"><br></div><div id="yui_3_16_0_1_1445423446749_5289"><br></div><div id="yui_3_16_0_1_1445423446749_5225"># Rodando no R:</div><div id="yui_3_16_0_1_1445423446749_5295"><br></div><div id="yui_3_16_0_1_1445423446749_5217"><div id="yui_3_16_0_1_1445423446749_5294">> tetaM=matrix(0,p,M)</div><div id="yui_3_16_0_1_1445423446749_5293">> strt<-Sys.time()</div><div id="yui_3_16_0_1_1445423446749_5292">> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { </div><div id="yui_3_16_0_1_1445423446749_5291">+ y=yM[,k]</div><div id="yui_3_16_0_1_1445423446749_5216">+ tetaM[,k]=lm(y~X-1)$coefficients</div><div id="yui_3_16_0_1_1445423446749_5260">+ #sgn.logL(teta3,y,X)</div><div>+ }</div><div id="yui_3_16_0_1_1445423446749_5446">Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : </div><div> worker initialization failed: 5.207760032192210.72556160440376</div><div id="yui_3_16_0_1_1445423446749_5238">> print(Sys.time()-strt)</div><div id="yui_3_16_0_1_1445423446749_5253">Time difference of 0.06304097 secs</div><div id="yui_3_16_0_1_1445423446749_5254">> </div><div id="yui_3_16_0_1_1445423446749_5255">> tetaM</div><div id="yui_3_16_0_1_1445423446749_5256"> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]</div><div id="yui_3_16_0_1_1445423446749_5257">[1,] 0 0 0 0 0 0 0 0 0 0</div><div id="yui_3_16_0_1_1445423446749_5237">[2,] 0 0 0 0 0 0 0 0 0 0</div><div id="yui_3_16_0_1_1445423446749_5258">> tetaM=matrix(0,p,M)</div><div id="yui_3_16_0_1_1445423446749_5259">> strt<-Sys.time()</div><div id="yui_3_16_0_1_1445423446749_5443">> tetaM=foreach (k = 1:M,.combine=cbind) %dopar% { </div><div>+ y=yM[,k]</div><div id="yui_3_16_0_1_1445423446749_5235">+ tetaM[,k]=lm(y~X-1)$coefficients</div><div id="yui_3_16_0_1_1445423446749_5234">+ #sgn.logL(teta3,y,X)</div><div>+ }</div><div>> print(Sys.time()-strt)</div><div>Time difference of 0.07505703 secs</div><div>> </div><div>> tetaM</div><div> result.1 result.2 result.3 result.4 result.6 result.7 result.10</div><div>X1 4.738553 4.584143 4.923599 4.962845 4.737695 5.2330998 4.9280171</div><div>X2 1.313208 1.855138 1.121618 1.053215 1.571513 0.6168855 0.9040763</div></div><div><br></div><br clear="all"><div id="yui_3_16_0_1_1445423446749_5232"><div class="yiv4105123120gmail_signature" id="yui_3_16_0_1_1445423446749_5231"><div dir="ltr" id="yui_3_16_0_1_1445423446749_5230">Atenciosamente,<br><br>Prof. Clécio da Silva Ferreira<br>Depto de Estatística - UFJF<br>Tel: (32) 2102-3306<br>Página: <a rel="nofollow" target="_blank" href="http://www.ufjf.br/clecio_ferreira">www.ufjf.br/clecio_ferreira</a><br><br></div></div></div>
</div></div><br>_______________________________________________<br>R-br mailing list<br><a ymailto="mailto:R-br@listas.c3sl.ufpr.br" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forne� c�igo m�imo reproduz�el.<br><br></div> </div> </div> </div></body></html>