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)
我一直想知道对列表进行矩阵乘法的最有效方法。
假设我有一个矩阵 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)