Функции пакетного пакета parXapply() очень хорошо распределяют работу, когда данные содержатся только в одном списке или матрице, но в этом случае мне нужно запустить функцию на четырех разных типах матриц.Распространение списков на снеговом кластере
Например, это то, что я сейчас:
res.list = parLapply(cl, mynames, myfun, listA, listB, listC, listD)
myfun = function(name, listA, listB, listC, listD) {
matrixA = listA[[name]]
matrixB = listB[[name]]
matrixC = listC[[name]]
matrixD = listD[[name]]
}
Проблема, которую я имею что матрицы очень велики, и я подозреваю, называя parLapply() на полных списков включает в себя передачу всех данных каждый узел кластера. Это может быть очень трудоемким и снижает производительность кластера.
Как разбить списки перед вызовом myfun() и отправлять только соответствующие матрицы для каждого узла для обработки?
Похоже, что mapply() - это то, что мне нужно, но оно недоступно в снегу. –