R: рекурсивная индексация не удалась на уровне 2 - PullRequest
0 голосов
/ 11 апреля 2019

Я создал список матриц, я хочу иметь возможность применять к ним операции, одну вещь, которую я хочу сделать, это объединить их, используя операторы вроде 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 голосов
/ 11 апреля 2019

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...