[R] parSapply can't find function
Duncan Murdoch
murdoch.duncan at gmail.com
Mon Apr 29 20:26:47 CEST 2013
On 29/04/2013 2:16 PM, Kaiyin Zhong (Victor Chung) wrote:
> Hi, Uwe.
>
> I still don't get how this can be done correctly. Here is what I tried.
>
> In the file funcs.R, define these functions:
>
> library('modeest')
> x = vector(length=500)
> x = sapply(x, function(i) i=sample(c(1,0), 1))
> pastK = function(n, x, k) {
> if (n>k) { return(x[(n-k):(n-1)]) }
> else {return(NA)}
> }
> predR = function(x, k) {
> pastList = lapply(1:length(x), function(n) pastK(n, x, k))
> pred = sapply(pastList, function(v) mfv(v)[1])
> ratio = sum(pred==x, na.rm=T)/(length(pred) - sum(is.na(pred)))
> }
>
>
>
> Then do the following:
>
> library('snow')
> cl = makeCluster(rep('localhost', 12), 'SOCK')
> clusterSetupRNG(cl)
> clusterEvalQ(cl, 'source("funcs.R")')
The expression being evaluated there is a string,
'source("funcs.R")'
You want an expression, e.g.
clusterEvalQ(cl, source("funcs.R"))
Duncan Murdoch
> testK = function() {
> k = seq(3, 25, 2)
> r = parSapply(cl, k, function(i) predR(x, i))
> print(r)
> }
> testK()
> stopCluster(cl)
>
>
> The error still pops up:
>
> Error in checkForRemoteErrors(val) :
> 12 nodes produced errors; first error: could not find function "predR"
>
>
>
>
>
> Best regards,
>
> Kaiyin ZHONG
> ------------------------------
> FMB, Erasmus MC
> k.zhong at erasmusmc.nl
> kindlychung at gmail.com
>
>
> On Tue, Apr 23, 2013 at 3:44 PM, Uwe Ligges <ligges at statistik.tu-dortmund.de
> > wrote:
>
> >
> >
> > On 23.04.2013 15:00, Kaiyin Zhong (Victor Chung) wrote:
> >
> >> Thanks for the reply.
> >>
> >> How can i make the functions known to all nodes?
> >>
> >
> > See ?clusterEvalQ
> >
> > you may also want to try the parallel packages.
> >
> > Best,
> > Uwe Ligges
> >
> >
> >
> >
> >> Best regards,
> >>
> >> Kaiyin ZHONG
> >> ------------------------------**------------------------------**
> >> ------------
> >> FMB, Erasmus MC
> >> k.zhong at erasmusmc.nl <mailto:k.zhong at erasmusmc.nl>
> >> kindlychung at gmail.com <mailto:kindlychung at gmail.com>
> >>
> >>
> >>
> >> On Tue, Apr 23, 2013 at 2:43 PM, Uwe Ligges
> >> <ligges at statistik.tu-dortmund.**de <ligges at statistik.tu-dortmund.de>
> >> <mailto:ligges at statistik.tu-**dortmund.de<ligges at statistik.tu-dortmund.de>>>
> >> wrote:
> >>
> >>
> >>
> >> On 18.04.2013 11:11, Kaiyin Zhong (Victor Chung) wrote:
> >>
> >> Here is the code, assuming 8 cores in the cpu.
> >>
> >> library('modeest')
> >> library('snow')
> >>
> >> cl = makeCluster(rep('localhost', 8), 'SOCK')
> >> x = vector(length=50)
> >> x = sapply(x, function(i) i=sample(c(1,0), 1))
> >>
> >> pastK = function(n, x, k) {
> >> if (n>k) { return(x[(n-k):(n-1)]) }
> >> else {return(NA)}
> >> }
> >>
> >> predR = function(x, k) {
> >> pastList = lapply(1:length(x), function(n) pastK(n, x, k))
> >> pred = sapply(pastList, function(v) mfv(v)[1])
> >> ratio = sum(pred==x, na.rm=T)/(length(pred) - sum(is.na
> >> <http://is.na>(pred)))
> >>
> >> }
> >>
> >> testK = function() {
> >> k = seq(3, 25, 2)
> >> r = parSapply(cl, k, function(i) predR(x, i))
> >> # r = sapply(k, function(i) predR(x, i))
> >> }
> >>
> >> r = testK()
> >> stopCluster(cl)
> >>
> >> Here is the error:
> >> Error in checkForRemoteErrors(val) :
> >> 8 nodes produced errors; first error: could not find
> >> function "predR"
> >>
> >>
> >>
> >> predR is not yet known on all nodes, just on the master. You have to
> >> tell the nodes about the definition first.
> >>
> >> Best,
> >> Uwe Ligges
> >>
> >>
> >>
> >>
> >>
> >>
> >> Best regards,
> >>
> >> Kaiyin ZHONG
> >> ------------------------------
> >>
> >> FMB, Erasmus MC
> >> k.zhong at erasmusmc.nl <mailto:k.zhong at erasmusmc.nl>
> >> kindlychung at gmail.com <mailto:kindlychung at gmail.com>
> >>
> >> [[alternative HTML version deleted]]
> >>
> >> ______________________________**__________________
> >> R-help at r-project.org <mailto:R-help at r-project.org> mailing list
> >> https://stat.ethz.ch/mailman/_**_listinfo/r-help<https://stat.ethz.ch/mailman/__listinfo/r-help>
> >>
> >> <https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
> >> >
> >> PLEASE do read the posting guide
> >> http://www.R-project.org/__**posting-guide.html<http://www.R-project.org/__posting-guide.html>
> >>
> >> <http://www.R-project.org/**posting-guide.html<http://www.R-project.org/posting-guide.html>
> >> >
> >> and provide commented, minimal, self-contained, reproducible code.
> >>
> >>
> >>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
More information about the R-help
mailing list