#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. можете ли вы добавить пример?