2013-10-11 49 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适当的值。