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