У меня есть функция, которую я использую с 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. Я немного упростил эту функцию, но постарался сохранить все, что в ней происходит.