我有两个矩阵列表,我想将第一个列表的第一个元素与第二个列表的第一个元素相乘,依此类推,由于每个列表上可能有很多元素,所以不写每个运算符(两个列表的长度相同)
这就是我的意思
'(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))))'
其中任何一步都是有用的
答案 0 :(得分:0)
您可以使用rlist软件包。
函数
list.apply(.data, .fun, ...)
将对每个列表元素应用一个功能。
您可以在[https://cran.r-project.org/web/packages/rlist/rlist.pdf][1]上找到文档。