r - R 中矩阵的每一行与另一个矩阵的叉积

标签 r matrix multiplication

Suppose I have a matrix

A=

      [1, 2, 3;
       4, 5, 6;
       7, 8, 9;
       8, 7, 6];

我想要 A 的每一行和另一个矩阵 B 的叉积,其中

B=

      [1, 0.5, 0.5;
       0.5, 1, 0.5;
       0.5, 0.5, 1];

for 循环可以写成,

for(i in 1:4)
{
      t(A[i,])%*%B;
}

是否有更优化的方法来执行此操作而不使用 for 循环?

最佳答案

以下三个解决方案是等效的并提供相同的结果;但它们的性能有所不同。我确实在 10000 迭代的循环中运行它们来比较它们的平均性能,结果如下:

1-

for(i in 1:4)
{
  t(A[i,])%*%B;
}

时间:0.46

2-

apply(A,1,crossprod,B)

时间:0.58

3-

t(A %*% B)

t(tcrossprod(A,B))

时间:0.08

关于r - R 中矩阵的每一行与另一个矩阵的叉积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170969/

相关文章:

r - 为 'function' 类对象导出 S3 方法

r - r中直方图中的垂直线

r - 对从 Rscript.exe 调用的 R 脚本进行故障排除

尝试在 ggplot 中使用 stat_function 时收到错误

java - java中的浮点乘法

r - 如何将GPU(gpuR)矩阵转换为标准R矩阵?

c++ - 哪个处理器的成本更高?

algorithm - 帮助计算(四叉树)矩阵的列和的算法?

Mysql 乘法运算

python - 如果我将元素放入括号中,则乘法为零(python)