2012-11-25 46 views
1

甲存儲一個迴路的值在矩陣具有下列矩陣,使用R

w= 
    0.0 0.0 0.0 0.3 0.4 
    0.1 0.0 0.5 0.2 0.0 
    0.0 0.3 0.0 0.0 0.0 
    0.0 0.0 0.6 0.0 0.0 
    0.0 0.0 0.0 0.5 0.0 
c= 
    0.1 0.0 0.00 0.0 0.00 
    0.0 0.4 0.00 0.0 0.00 
    0.0 0.0 0.25 0.0 0.00 
    0.0 0.0 0.00 0.2 0.00 
    0.0 0.0 0.00 0.0 0.05 

x = seq(1, 1, length=5) 
result = matrix() 

我建立R中循環:

nloop=10 
for (i in 1:nloop) 
{ 
    u=x %*% t(w) 

    x=(x %*% t(w))+((u) %*% t(c)) 

    x=1/(1+exp(x)) 

    result=matrix(nrow=10 , ncol = 5) 
    for (i in 1:10) 
    { 
     result[[i]] =x 
    } 
} 

ř返回此錯誤:

Error in result[[i]] = x : more elements supplied than there are to replace

我想存儲每個循環的值在result矩陣

+3

請'dput' w和c,所以我們不必複製您的數據結構。另外,你爲什麼不說你想達到什麼。我敢打賭,有一種方法可以做到沒有循環(這不是你的問題;矩陣的尺寸是)。 –

+0

'result'錯誤索引;不應該在循環內定義結果; – liuminzhao

+0

@ AriB.Friedman,我的矩陣維度有什麼問題? –

回答

2

我找到了解決方案。它不是優雅的,但它的作品。

result = vector("list") 

nloop=10 
    for (i in 1:nloop) 
    { 
    u=x %*% t(w) 
    x=(x %*% t(w))+((u) %*% t(c)) 
    x=1/(1+exp(1*x)) 
    result[[i]]=(x) 
    } 


result=do.call(rbind, result) 

謝謝你的建議

1

矩陣< - 矩陣(NcoI位= numberOfCols,nrow = numberOfRows);

matrix [rowNum,] < -row; #rowNum是你覆蓋的行數。