我有一个与lapply一起使用的函数,它工作正常。我试图将lapply转换为parLapply,现在它返回了error on cluster node 1 processing element 1: object of type 'closure' is not subsettable
。这是我如何设置并行环境的问题,还是其他问题?
我正在使用的功能:
setLimits<-function(col){
if(choice=="num"){
if (auto=="0"){
high=inHigh[count]
low=inLow[count]
}
else{
high=inHigh[1]
low=inLow[1]
}
}
else{
if (auto=="0"){
high=attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.upper+attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.upper*(inHigh[count]/100)
low=attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.lower+attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.lower*(inLow[count]/100)
}
else{
high=attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.upper+attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.upper*(inHigh[1]/100)
low=attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.lower+attributes(dt[,col])$SpotfireColumnMetaData$limits.prod.lower*(inLow[1]/100)
}
}
list(low,high)
}
设置:
numCores <- detectCores()
cluster<-makeCluster(numCores)
inHigh<-[100,5000,340,6532,45325,645345,2342,2466]
inLow<-[-432,-34325,-5342-,643,234,234,234,1]
x=ncol(dt)
调用parlApply:
inVal=parLapply(cl=cluster,X=1:ncol(dt),fun=setLimits)
打电话给不幸的人
inVal=lapply(1:ncol(dt),setLimits)
对不起,我无法提供dt,并且dput
似乎不适用于我使用的程序。 dt存储为data.frame。我确实简化了该函数,但是尝试保留其中发生的主要事情。