1
Я использую следующий код:Верхняя диагональная расчет параллельно R
library(foreach)
library(doParallel)
N<-5
cl<-makeCluster(8)
registerDoParallel(cl)
#loop
s8 <- foreach(i=1:N, .combine='rbind') %:%
foreach(j=1:N, .combine='c') %dopar% {
dis <-as.numeric (i+j) } ## In reality there something more complicated
stopCluster(cl)
я получаю следующий результат:
> s8
[,1] [,2] [,3] [,4] [,5]
result.1 2 3 4 5 6
result.2 3 4 5 6 7
result.3 4 5 6 7 8
result.4 5 6 7 8 9
result.5 6 7 8 9 10
Я хотел бы получить верхнюю диагональную матрицу, как следует:
> s8
[,1] [,2] [,3] [,4] [,5]
result.1 2 3 4 5 6
result.2 0 4 5 6 7
result.3 0 0 6 7 8
result.4 0 0 0 8 9
result.5 0 0 0 0 10
Если я сменил итератор внутреннего контура на
foreach(j=i:N, .combine='c') %dopar% {
Я не получаю требуемые результаты.
делает предлагаемое решение с управлением временной перспективе быстрее, чем исходный код? так как на самом деле N (размер файловой системы) высок. – Avi
Он избегает ненужных итераций и поэтому должен быть быстрее. Оцените это. Разумеется, реальные улучшения скорости должны были бы учитывать ваш «сложный» код. – Roland