2012-11-21 89 views
0
library(foreach) 
library(doMPI) 

m<-matrix(as.integer(0),5,5) 

cl <- startMPIcluster(count=4) 
registerDoMPI(cl) 

foreach(b=1:5)%dopar% 
    { 
    m[b,]<-c(1:5) 
    } 

在R上運行上面的代碼,我得到了較低的結果。使用foreach〜dopar的計算矩陣R

> m 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 0 0 0 0 0 
[2,] 0 0 0 0 0 
[3,] 0 0 0 0 0 
[4,] 0 0 0 0 0 
[5,] 0 0 0 0 0 

我該如何獲得適用於行方式替換的矩陣?

回答

1

foreach%dopar%的目的不是修改創建集羣的R進程環境中的對象。這些函數主要用於執行一些處理並返回最後一次評估表達式的值。

所以取而代之,

mNew <- foreach(b=1:5, .combine = rbind) %dopar% 
{ 
    c(1:5) 
} 

或者,如果你只是想從原來的矩陣爲 「取代」 的某些元素,

mNew <- foreach(b=1:5, .combine = rbind) %dopar% 
{ 
    c(m[b, seq_len(b)], seq_len(5)[seq_len(5 - b)]) 
}