在 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]))
假设我有两个数组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]))