如何调整我的函数以乘以多个(随机数)矩阵?

How do I adjust my function to multiply multiple (random number of) matrices?

我编写了以下函数来将两个矩阵 AB 相乘:

f <- function(A,B){
       m<-nrow(A)
       n<-ncol(A)
       n<-nrow(B)
       p<-ncol(B)
       Result<-matrix(0,nrow = m,ncol = p)
       for(i in 1:m){
         for(j in 1:p){
           for(k in 1:n){
             Result[i,j]<-Result[i,j]+A[i,k]*B[k,j]  
             }
           }
         }
       return(Result)
       }

如何将我的函数代码调整为 3 或更多的倍数,即矩阵的随机数而不是 2 个?

你只是迭代地应用双矩阵乘法。设 f 为乘以两个矩阵 AB 的基本函数。通常我们使用内部的 %*%,但您可以使用问题中定义的那个。

由于矩阵个数未知,建议使用...。我们通过 list(...) 收集所有输入到 "matrix list" 的矩阵,然后使用 Reduce 累加应用双操作数矩阵乘法。

g <- function (...) Reduce(f, list(...))

请注意,您有责任确保矩阵维度一致,尤其是当您有很多矩阵时。下面以方阵为例

set.seed(0)
A <- matrix(rnorm(4),2)
B <- matrix(rnorm(4),2)
C <- matrix(rnorm(4),2)
f <- "%*%"

g(A, B, C)
#          [,1]        [,2]
#[1,] -3.753667  0.08634328
#[2,] -0.161250 -1.54194176

这与:

A %*% B %*% C
#          [,1]        [,2]
#[1,] -3.753667  0.08634328
#[2,] -0.161250 -1.54194176