在R中,我想计算以下内容:
这就是我拥有它的方式
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中最快的方式是什么?
答案 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