我有一个要相互乘以R的大小相等的矩阵的列表。

我正在寻找一种方法:

list$A * list$B * list$C * ...

无需手动输入(我的列表中有数十个矩阵)。

最佳答案

如果要逐个元素相乘,请使用Reduce

> Lists <- list(matrix(1:4, 2), matrix(5:8, 2), matrix(10:13, 2))
> Reduce("*", Lists)
     [,1] [,2]
[1,]   50  252
[2,]  132  416

除了使用abind,还可以使用simplify2array函数和apply
> apply(simplify2array(Lists), c(1,2), prod)
     [,1] [,2]
[1,]   50  252
[2,]  132  416

如果要使用abind,请使用以下命令:
> library(abind)
> apply(abind(Lists, along=3), c(1,2), prod)
     [,1] [,2]
[1,]   50  252
[2,]  132  416

09-03 18:42