#rstudio
#rstudio
Вопрос:
Я создал список матриц, я хочу иметь возможность применять операции с ними, единственное, что я хочу сделать, это объединить их с помощью операторов, таких как 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'
Ответ №1:
Вы можете использовать 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