适用于lapply的函数为parLapply返回错误

时间:2019-11-04 08:29:34

标签: r lapply doparallel

我有一个与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。我确实简化了该函数,但是尝试保留其中发生的主要事情。

0 个答案:

没有答案