使用循环观察到的矩阵的期望值矩阵

时间:2017-11-04 19:33:26

标签: r for-loop matrix

我试图弄清楚如何使用for循环来创建期望值的矩阵。它应该能够处理任何大小的矩阵。到目前为止,我已经能够提出这一切。

for(i in 1:obsv){
   for(j in 1:obsv){
      obsv[i,j]<-(sum(obsv[i,])*sum(obsv[,j]))/sum(obsv)
  }
}
##obsv is the name of the matrix of observed values

1 个答案:

答案 0 :(得分:1)

你的循环显然是错误的,见下文。主要的错误是你需要遍历1:nrow(obsv)1:ncol(obsv),而不是像你这样做。
我将使用假矩阵,因为您还没有发布示例数据集。

obsv <- matrix(1:25, ncol = 5)

obsv2 <- obsv    # modify a copy

for(i in 1:nrow(obsv)){
   for(j in 1:ncol(obsv)){
      obsv2[i, j] <- sum(obsv[i, ])*sum(obsv[, j])/sum(obsv)
  }
}

现在,上面的代码可以大大简化。单行将会这样做。

obsv3 <- rowSums(obsv) %*% t(colSums(obsv))/sum(obsv)

identical(obsv2, obsv3)
#[1] TRUE