функция, которая работает для lapply, возвращает ошибку для parLapply - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть функция, которую я использую с 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)

, вызывающая lapply:

inVal=lapply(1:ncol(dt),setLimits)

Извините, я не смогу предоставить dt, и dput не работает для программы, которую я использую. DT хранится в виде data.frame. Я немного упростил эту функцию, но постарался сохранить все, что в ней происходит.

...