R如何通过行向量对矩阵除法求和

时间:2014-02-20 08:48:58

标签: r

在R中,我想计算以下内容:

enter image description here

这就是我拥有它的方式

for (i in 1:dim(x)[1] ) {
  for (j in 1:dim(x)[2] ) {
      omega_2new[i] = sum((X[,j]-munew)^2/sigma_2new[j])
  }
}
omega_2new = omega_2new/dim(x)[2]

在R中最快的方式是什么?

2 个答案:

答案 0 :(得分:2)

使用@ Zbynek的数据,但避免R循环并对行进行求和(我相信是必需的):

1/ncol(M)*colSums(t((M-munew)^2)/sigma_2new)

答案 1 :(得分:1)

首先我创建一些示例数据

M <- matrix(runif(100), nrow=10)

sigma_2new <- runif(10)

munew <- mean(M)

然后在列范围内使用sapply

omega_2new <- sapply(1:nrow(M), function(x) sum((M[x,]-munew)^2/sigma_2new[x]))
omega_2new
 [1] 1.4127063 3.9928844 1.3996303 1.2290480 1.4367367 4.9893873 0.9401457 0.6567372 4.5156849 1.0743495