r: %*% 和 lapply/mapply 当参数被颠倒时

r: %*% and lapply/mapply when arguments are reversed

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

假设我有一个矩阵 A 和一个 list 矩阵 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 的每个元素 b:

A %*% b

我试图使用 lapply() 但无法弄清楚如何在没有额外嵌套 lapply 的情况下确保正确的乘法顺序来转置每个 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...

有哪位大侠可以指点一下吗?

只需在 lapply() 中定义您的 function,就像这样

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