在对矩阵索引求和时避免使用嵌套for循环

时间:2015-04-24 09:34:00

标签: r performance for-loop

我有一个相当简单的计算我需要做,但我无法弄清楚如何以一种甚至接近有效的方式来做。我有一个大的nxn矩阵,我需要计算以下内容:

enter image description here

我对编码仍然缺乏经验,因此我想到的唯一方法是做一些简单的事情并使用3 for循环来跨越索引:

sum=0
for(i in 1:n)
{
    for(j in 1:n)
    {
        for(k in 1:n)
        {
           sum = sum + A[i,j]*A[j,k]
        }
    }
}

毋庸置疑,对于任何体面的大小矩阵,这都需要永远运行。我知道必须有更好,更有效的方法来做到这一点,但我无法弄明白。

1 个答案:

答案 0 :(得分:2)

如果你不考虑ki总和,你可以意识到你只是在做A的矩阵乘积。 R中的这种产品是通过%*%运算符获得的。计算此矩阵后,您只需要将所有元素相加:

 sum(A %*% A)

应该给出你想要的结果。