Не уверен, почему это было отклонено либо.Я думаю, что пакет foreach - это то, что вам нужно.Эти первые несколько PDF-файлов содержат очень четкую полезную информацию.В основном напишите, что вы хотите сделать для каждого человека как функцию.Затем используйте foreach для отправки данных об одном человеке на узел для запуска функции (при отправке других людей на другой узел и т. Д.), А затем она компилирует все результаты, используя что-то вроде rbind.Я использовал это несколько раз с отличными результатами.
Редактировать: я не пытался переделать ваш код, как я полагаю, учитывая, что вы получили настолько далеко, что у вас будет достаточно навыков, чтобы обернуть егофункцию, а затем используйте один вкладыш foreach.
Редактировать 2: Это было слишком долго для комментария, чтобы ответить вам.
Я думал, так как вы зашли так далеко с кодом, который выЯ смог бы включить его в функцию :). Если вы все еще работаете над этим, вам может понадобиться написать цикл for для циклов по вашим объектам и выполнить вычисления, необходимые для этого объекта.Тогда цикл for - это то, что вы хотите в своей функции.Я думаю, что в вашем коде все это вплоть до «area.grid».Тогда вы можете избавиться от большинства ваших [n], так как данные являются только подмножеством один раз за итерацию.
Возможно:
pernode <- function(MovData) {
IndivData = MovData[MovData$ID==IDNames[i],]
IndivData = IndivData[1:(nrow(IndivData)-1),]
if (UseTimeWindow==T){
IndivDates = dates[dates$ID==IDNames,]
IndivData = IndivData[IndivData$DateTime>IndivDates$Start[1]
&IndivData$DateTime<IndivDates$End[1],]
}
IndivData$TimeDif[nrow(IndivData)]=NA
BBMM <- brownian.bridge(x=IndivData$x, y=IndivData$y,
time.lag = IndivData$TimeDif[1:(nrow(IndivData)-1)], location.error=20,
area.grid = Grid, time.step = 0.1)
return(BBMM)
}
Тогда что-то вроде:
library(doMC)
library(foreach)
registerDoMC(cores=48) # or perhaps a few less than all you have
system.time(
output <- foreach(i = 1:length(IDNames)), .combine = "rbind", .multicombine=T,
.inorder = FALSE) %dopar% {pernode(i)}
)
Трудно сказать, так ли это без каких-либо тестовых данных, дайте мне знать, как вы ладите.