我一直想知道在列表上进行矩阵乘法的最有效方法。
假设我有一个矩阵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...
有人可以在这里给我一些指示吗?
答案 0 :(得分:2)
只需在function
内定义lapply()
,就像这样
lapply(B, function(x) A%*%x)