在循环中重命名矩阵和标量

时间:2013-10-11 08:50:20

标签: r

我正在尝试创建一个循环,它会更改每次迭代的名称。代码如下所示。所以我基本上需要的是例如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)
}

我希望我的问题有道理。

感谢。

1 个答案:

答案 0 :(得分: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_(一)及LT; -     }

给予W_1适当的价值。