在 R 中的单独数组中乘以对应的矩阵

Multiply Corresponding Matrices in Separate Arrays in R

假设我有两个数组A和B,每个数组包含n个mxm方阵;即A和B的维度都是dim=c(m,m,n)。对于 1 和 n 之间的每个 j,使用 R 获取乘积 A[,,j]%*%B[,,j]%*%t(A[,,j]) 相同维数的数组的最有效方法是什么?

谢谢!

这是使用 Map 的一种方法:

# create some data
set.seed(1234)
A <- replicate(3, matrix(rnorm(4), 2))
B <- replicate(3, matrix(rnorm(4), 2))

# get the results
Map(function(j) A[,,j]%*%B[,,j]%*%t(A[,,j]), 1:3)

数组是2X2X3。 Map 将您的函数应用于 A 和 B 中的三个三维矩阵中的每一个。

您也可以使用 lapply:

lapply(1:3, function(j) A[,,j]%*%B[,,j]%*%t(A[,,j]))