最快的方法来做这个双重求和?

时间:2014-02-20 19:50:34

标签: r

在R中执行此求和enter image description here的最快方法是什么?

这是我到目前为止所拥有的

ans = 0
for (i in 1:dimx[1]){
  for (j in 1:dimx[2]){
    ans = ans + ((x[i,j] - parameters$mu)^2)/(parameters$omega_2[i]*parameters$sigma_2[j])
  }
}

其中omega_2sigma_2分别是omega ^ 2和sigma ^ 2.

2 个答案:

答案 0 :(得分:4)

没什么好看的:

# sample data
m <- matrix(1:20, 4)
sigma <- 1:ncol(m)
omega <- 1:nrow(m)
mu <- 2

sum(((m - mu) / outer(omega, sigma))^2)

答案 1 :(得分:2)

通常很容易对这种操作进行矢量化。但是,在这种情况下,当n不等于m并且还因为双重求和时,它有点棘手。但这是我们如何进行的:

# n = 3, m = 2
xs <- cbind(1:3, 4:6)
omegas <- 1:3
sigmas <- 1:2
mu <- 3

sum((t((xs - mu) / omegas) / sigmas)^2)
# [1] 5

此处我们使用了三次回收和t()来按sigmas划分适当的元素。