умножение двух списков матриц в непрерывной форме

#r

#r

Вопрос:

У меня есть два списка матриц, и я хочу умножить первый элемент первого списка на первый элемент второго списка и так далее, без записи всех операций из-за того, что в каждом списке может быть большое количество элементов (оба списка имеют одинаковую длину)

это то, что я имею в виду

 '(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))))'
  

любой из этих шагов будет полезен

Ответ №1:

вы могли бы использовать пакет rlist .

Функция

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

применит функцию к каждому элементу списка.

Вы можете найти документацию по адресу [https://cran.r-project.org/web/packages/rlist/rlist.pdf ][1].

Комментарии:

1. можете ли вы добавить пример?