Я создал список матриц, я хочу иметь возможность применять к ним операции, одна вещь, которую я хочу сделать, это объединить их, используя такие операторы, как cbin и rbind среди других, один из способов сделать это следующий, но я просто хочу сохраняйте матрицы в список и применяйте операции, не записывая всех подряд.
'Combinedmatrix<-cbind(elementlist[[1]],...,elementlist[[n]])'
Есть ли способ сделать то же самое вместо записи каждого элемента списка? Я попробовал следующий
'(i in 1:length(list)){combinedmatrix<-cbind(list[[i]])}'
в этом случае он берет только последний элемент и больше ничего не делает, другой способ, которым я пробовал, был:
'i<-1:length(list)'
'combinedmatrix<-cbind(list[[i]])}'
в этом случае появляются
'Error in list[[i]] : recursive indexing failed at level 2'
Вы можете использовать reduce()
из пакета purrr
. Предполагая, что mlist
- это ваш список матриц:
library(purrr)
reduce(mlist,rbind)
С примерными данными:
> mlist <- list(matrix(1:9,nrow=3),matrix(1:9,nrow=3),matrix(1:9,nrow=3))
> mlist
[[1]]
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[[2]]
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[[3]]
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> reduce(mlist,rbind)
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[4,] 1 4 7
[5,] 2 5 8
[6,] 3 6 9
[7,] 1 4 7
[8,] 2 5 8
[9,] 3 6 9