r语言 - 使用循环观察的矩阵中的期望值矩阵



我正在尝试弄清楚如何使用 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: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

最新更新