r:%*%和参数反转时的lappy/mappy

r:%*%和参数反转时的lappy/mappy,r,matrix,matrix-multiplication,R,Matrix,Matrix Multiplication,我一直想知道在列表上进行矩阵乘法的最有效的方法 假设我有一个矩阵a和一个矩阵B的列表: A = matrix(c(1,2,3,4), ncol=2, nrow=2) B = list(matrix(c(1,2,3,4), ncol=2, nrow=2), matrix(c(4,3,2,1), ncol=2, nrow=2)) A %*% b 我想要A的交叉积列表和b的每个元素b: A = matrix(c(1,2,3,4), ncol=2, nrow=2) B = list(matrix(c

我一直想知道在列表上进行矩阵乘法的最有效的方法

假设我有一个矩阵
a
和一个矩阵
B
列表:

A = matrix(c(1,2,3,4), ncol=2, nrow=2)
B = list(matrix(c(1,2,3,4), ncol=2, nrow=2), matrix(c(4,3,2,1), ncol=2, nrow=2))
A %*% b
我想要
A
的交叉积列表和
b
的每个元素
b

A = matrix(c(1,2,3,4), ncol=2, nrow=2)
B = list(matrix(c(1,2,3,4), ncol=2, nrow=2), matrix(c(4,3,2,1), ncol=2, nrow=2))
A %*% b
我试图使用
lappy()
,但不知道如何确保正确的乘法顺序,而不使用额外的嵌套
lappy
,来转置每个
b

lapply(B, '%*%', A) # which gives a list of b%*%A rather than A%*%b
lapply(lapply(lapply(B, t), '%*%', t(A)), t) # gives the answer but geez...

有人能给我一些提示吗?

只要在
lappy()中定义
函数就可以了

lapply(B, function(x) A%*%x)

只需在
lappy()中定义
函数
,如下所示

lapply(B, function(x) A%*%x)