R:递归索引在级别2失败

时间:2019-04-10 21:50:38

标签: 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 个答案:

答案 0 :(得分:0)

您可以使用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