2013-10-11 47 views
0

我試圖做一個循環,它改變了每個迭代的名稱。代碼如下所示。所以我基本需要的是例如a = 2,我想讓W_(a-1)引用一個名爲W_1的矩陣,W_(a)來引用一個名爲W_1的矩陣,最後是GMM_(a-1)$ par應該參考GMM_(1)$ par。重命名矩陣和標量循環

for (a in 2:100){ 
    GMM <- function(beta) { 
     for (i in 1:(nrow(gmm_i))){ 
      gmm_i[i,] <- g_beta(i,beta) 
     } 
     gmm_N <- t(colSums(gmm_i)) %*% W_(a-1) %*% colSums(gmm_i) 
     W_(a) <<- solve((1/(nrow(A)/5))*t(gmm_i)%*%gmm_i)      
     return(gmm_N) 
    } 
    GMM_(a)<-optim(GMM_(a-1)$par,GMM) 
} 

我希望我的問題有道理。

謝謝。

+0

看看'assign'? – juba

+0

讓您的生活更輕鬆,並使用列表。 – Roland

+0

我在一週前開始使用R。你能把它與我目前的問題聯繫起來嗎? –

回答

0

你想在工作區使用100個變量(a1,a2 ....)嗎?如果將所有這些放在列表中,將會更好,因爲它很容易使用。但是,如果由於某種原因,你確實需要一組變量,然後用這個,

W_1 = 0 
for (a in 2:100){ 
    GMM <- function(beta) { 
    for (i in 1:(nrow(gmm_i))){ 
     gmm_i[i,] <- g_beta(i,beta) 
    } 
    gmm_N <- t(colSums(gmm_i)) %*% W_(a-1) %*% colSums(gmm_i) 
    tmp <- solve((1/(nrow(A)/5))*t(gmm_i)%*%gmm_i) 
    assign((paste("W_",a,sep="")),tmp,envir=.GlobalEnv) 
    return(gmm_N) 
    } 
    tmp1 <- optim(GMM_(a-1)$par,GMM) 
    assign((paste("GMM_",a,sep="")),tmp1,envir=.GlobalEnv) 

GMM_(一)< - }

給W_1適當的值。