On Fri, Sep 21, 2012 at 5:43 AM, Tjun Kiat Teo <teotj...@gmail.com> wrote: > I am trying to do parallel programming and I tried this > > library(doSNOW) > library(foreach) > > testfunc<-function(x){ > x<-x+1 > x > } > > noc<-2 > > cl <- makeCluster(do.call(rbind,rep(list("localhost"),noc)), type = "SOCK") > registerDoSNOW(cl) > clusterExport(cl=cl,c("testfunc.r")) > > > testl<-foreach(pp=1:2) %dopar% { > testfunc(pp) > } > > > And this works but if I try to enclose my commands inside a text file > to be sourced it doesn't work > > noc<-2 > > testfunc<-function(x){ > x<-x+1 > x > } > > cl <- makeCluster(do.call(rbind,rep(list("localhost"),noc)), type = "SOCK") > > registerDoSNOW(cl) > > clusterExport(cl=cl,c("a","testfunc.r")) > > testl<-foreach(pp=1:2)) %dopar% { > source("test.r") > }
I'm not sure this is a parallelization issue: when you source() a file, it doesn't return the last value calculated in quite the way that running a function directly does. E.g., system("echo 2+2 > test.R") x <- source("test.R") identical(x,4) # FALSE str(x) # Look at what actually returned source("test.R")[[1]] # Actual result Perhaps that's tripping you up? Cheers, Michael ______________________________________________ R-help@r-project.org mailing list 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.