首页 > 解决方案 > 以连续形式将两个矩阵列表相乘

问题描述

我有两个矩阵列表,我想将第一个列表的第一个元素与第二个列表的第一个元素相乘,依此类推,而无需编写每个操作,因为每个列表上可能有大量元素(两个列表都有一样长)

这就是我的意思

'(colSums(R1*t(M1))),(colSums(R2*t(M2))),...(colSums(Rn*t(Mn)))'

我需要创建一个额外的列表吗?尽管首先我必须能够在将其中一个列表的矩阵相乘之前对其进行转置。结果将用于更简单的操作。

我已经尝试使用索引和循环但不起作用,首先尝试在一个这样的列表中转置矩阵(M 是列表之一,另一个名为 R,M 包含 M1、M2、..Mn 和相同对于列表 R)

完整的操作如下所示:

'for (i in 1:length(M)){Mt<-list(t(M[[i]]))}'

并且仅将其应用于最后一个元素。

完整的操作如下所示:

 '(cbind((colSums(R1*t(M1))),(colSums(R2*t(M2))),...(colSums(Rn*t(Mn))))'

这些中的任何步骤都会有用

标签: r

解决方案


你可以使用 rlist 包。

功能

list.apply(.data, .fun, ...)

将对每个列表元素应用一个函数。

您可以在 [ https://cran.r-project.org/web/packages/rlist/rlist.pdf][1]找到文档。


推荐阅读