我有一个相当简单的计算我需要做,但我无法弄清楚如何以一种甚至接近有效的方式来做。我有一个大的nxn矩阵,我需要计算以下内容:
我对编码仍然缺乏经验,因此我想到的唯一方法是做一些简单的事情并使用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]
}
}
}
毋庸置疑,对于任何体面的大小矩阵,这都需要永远运行。我知道必须有更好,更有效的方法来做到这一点,但我无法弄明白。
答案 0 :(得分:2)
如果你不考虑k
和i
总和,你可以意识到你只是在做A
的矩阵乘积。 R中的这种产品是通过%*%
运算符获得的。计算此矩阵后,您只需要将所有元素相加:
sum(A %*% A)
应该给出你想要的结果。