在R中运行sfLapply时出错

在R中运行sfLapply时出错,r,snowfall,R,Snowfall,我的代码如下所示: x<- c(1,2,3,4,5) library(snowfall) f1<- function(a,list){ f2<-function(b,num){ return(abs(num-b))} l1<-sfLapply(list, f2, num=a) l1<-sum(unlist(l1)) return(l1) } sfInit(parallel=TRUE,cpus=4) l2<-(sfLapply(x, f1

我的代码如下所示:

x<- c(1,2,3,4,5)

library(snowfall)

f1<- function(a,list){
  f2<-function(b,num){ return(abs(num-b))}

  l1<-sfLapply(list, f2, num=a)
  l1<-sum(unlist(l1))
  return(l1)
}

sfInit(parallel=TRUE,cpus=4)
l2<-(sfLapply(x, f1, list=x))
sfStop()
l2

x您需要在集群节点上加载
snowfall
包。所以插入

sfLibrary(snowfall)
sfInit()之后


编辑:澄清:


您的函数
f1
包含函数
sflappy
,该函数位于
snowfall
包中。当您如上所述使用
sfInit
初始化集群时,集群的每个节点上都会加载
snow
包,但不会加载
snowfall
包。如果没有后者,节点上就没有名为
sflappy
的对象(函数或其他),您会得到错误。

谢谢!你能解释一下这个的工作原理吗?我以前在多核上使用过sfLapply,但从来没有出现过这个错误。@jackStinger,编辑解释得够多了吗?能否将
f1
函数中的
sflappy
替换为
lappy
> l2<-(lapply(x, f1, list=x))
> l2
[[1]]
[1] 10

[[2]]
[1] 7

[[3]]
[1] 6

[[4]]
[1] 7

[[5]]
[1] 10
sfLibrary(snowfall)