All,

I figured out how to get it to work, so I am posting the solution in case 
anyone is interested.  I had to use attr to set the weights as an attribute of 
the data object for the linear model.  Seems convoluted, but anytime I tried to 
pass a named vector as the weights the foreach loop could not find the 
variable, even if I tried exporting it.  If anybody knows of a better way 
please let me know as this does not seem ideal to me, but it works.

library(doParallel)
cl <- makeCluster(4)
registerDoParallel(cl)
fmla <- as.formula("y ~ .")
models <- foreach(d=1:10, .combine=rbind, .errorhandling='pass') %dopar% {
  datdf <- data.frame(y = 1:100+2*rnorm(100), x = 1:100+rnorm(100))
  attr(datdf, "weights") <- rep(c(1,2), 50)
  mod <- lm(fmla, data=datdf, weights=attr(data, "weights"))
  return(mod$coef)
}
Models





-----Original Message-----
From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of Bos, Roger
Sent: Friday, October 07, 2016 9:25 AM
To: R-help
Subject: [R] weighted regression inside FOREACH loop

I have a foreach loop that runs regressions in parallel and works fine, but 
when I try to add the weights parameter to the regression the coefficients 
don’t get stored in the “models” variable like they are supposed to.  Below is 
my reproducible example:

library(doParallel)
cl <- makeCluster(4)
registerDoParallel(cl)
fmla <- as.formula("y ~ .")
models <- foreach(d=1:10, .combine=rbind, .errorhandling='remove') %dopar% {
  datdf <- data.frame(y = 1:100+2*rnorm(100), x = 1:100+rnorm(100))
  weights <- rep(c(1,2), 50)
  mod <- lm(fmla, data=datdf, weights=weights)
  #mod <- lm(fmla, data=datdf)
  return(mod$coef)
}
models

You can change the commenting on the two “mod <-“ lines to see that the 
non-weighted one works and the weighted regression doesn’t work.  I tried using 
.export="weights" in the foreach line, but R says that weights is already being 
exported.

Thanks in advance for any suggestions.





***************************************************************
This message and any attachments are for the intended recipient's use only.
This message may contain confidential, proprietary or legally privileged 
information. No right to confidential or privileged treatment of this message 
is waived or lost by an error in transmission.
If you have received this message in error, please immediately notify the 
sender by e-mail, delete the message, any attachments and all copies from your 
system and destroy any hard copies.  You must not, directly or indirectly, use, 
disclose, distribute, print or copy any part of this message or any attachments 
if you are not the intended recipient.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to