Подтвердить что ты не робот

R Как удалить уровень списков из списка списков

Я создал несколько списков в списке и хотел бы, чтобы каждый элемент подписок был отдельным элементом на верхнем уровне.

Например, чтобы создать некоторые фиктивные данные:

pp <- lapply(10:15,function(y){
    lapply(10:20,function(z){
        as.data.frame(matrix(rnorm(z*y),nrow=z,ncol=y))
    })  
})

Это создает следующий вывод

> summary(pp)
     Length Class  Mode
[1,] 11     -none- list
[2,] 11     -none- list
[3,] 11     -none- list
[4,] 11     -none- list
[5,] 11     -none- list
[6,] 11     -none- list

где вы также можете сделать

> summary(pp[[1]])
      Length Class      Mode
 [1,] 10     data.frame list
 [2,] 10     data.frame list
 [3,] 10     data.frame list
 [4,] 10     data.frame list
 [5,] 10     data.frame list
 [6,] 10     data.frame list
 [7,] 10     data.frame list
 [8,] 10     data.frame list
 [9,] 10     data.frame list
[10,] 10     data.frame list
[11,] 10     data.frame list

В результате результат будет просто создать новый список, который имеет примерно следующее:

new.pp[[1]] <- pp[[1]][[1]]
new.pp[[2]] <- pp[[1]][[2]]

но задавался вопросом, существует ли интеллектуальный или более эффективный метод простого удаления одного уровня списков, когда у вас есть списки в списках....

В идеале я ищу какую-то функцию, которая выполняет это для меня, так что, если, например, у меня было несколько уровней списков, вложенных друг в друга, а не только два, я могу повторно использовать функцию на каждом уровне, доведя каждый элемент до вершины списка в конце концов...

4b9b3361

Ответ 1

Я думаю, что это трюк

new.pp <- unlist(pp,recursive=FALSE)