Реорганизовать список со списками в новый список в R - PullRequest
0 голосов
/ 24 августа 2018

Это мой список:

mylist=list(list(a = c(2, 3, 4, 5), b = c(3, 4, 5, 5), c = c(3, 7, 5, 
5), d = c(3, 4, 9, 5), e = c(3, 4, 5, 9), f = c(3, 4, 1, 9), 
    g = c(3, 1, 5, 9), h = c(3, 3, 5, 9), i = c(3, 17, 3, 9), 
    j = c(3, 17, 3, 9)), list(a = c(2, 5, 48, 4), b = c(7, 4, 
5, 5), c = c(3, 7, 35, 5), d = c(3, 843, 9, 5), e = c(3, 43, 
5, 9), f = c(3, 4, 31, 39), g = c(3, 1, 5, 9), h = c(3, 3, 5, 
9), i = c(3, 17, 3, 9), j = c(3, 17, 3, 9)), list(a = c(2, 3, 
4, 35), b = c(3, 34, 5, 5), c = c(3, 37, 5, 5), d = c(38, 4, 
39, 5), e = c(3, 34, 5, 9), f = c(33, 4, 1, 9), g = c(3, 1, 5, 
9), h = c(3, 3, 35, 9), i = c(3, 17, 33, 9), j = c(3, 137, 3, 
9)), list(a = c(23, 3, 4, 85), b = c(3, 4, 53, 5), c = c(3, 7, 
5, 5), d = c(3, 4, 9, 5), e = c(3, 4, 5, 9), f = c(3, 34, 1, 
9), g = c(38, 1, 5, 9), h = c(3, 3, 5, 9), i = c(3, 137, 3, 9
), j = c(3, 17, 3, 9)), list(a = c(2, 3, 48, 5), b = c(3, 4, 
5, 53), c = c(3, 73, 53, 5), d = c(3, 43, 9, 5), e = c(33, 4, 
5, 9), f = c(33, 4, 13, 9), g = c(3, 81, 5, 9), h = c(3, 3, 5, 
9), i = c(3, 137, 3, 9), j = c(3, 173, 3, 9)))

Как видите, в моем списке 5 записей.Каждая запись имеет 10 других записей, заполненных 4 элементами.

> mylist[[4]][[1]]
[1] 23  3  4 85

Я хочу создать еще один список только с одной записью.

Все хотят поместить все входные данные типа mylist[[i]][[1]] в первую позицию нового списка: mynewlist[[1]][[1]] будет заполнен mylist[[1]][[1]], mylist[[2]][[1]], mylist[[3]][[1]], mylist[[4]][[1]], mylist[[5]][[1]] элементов.

Вторая позиция mynewlist (mynewlist[[2]][[1]]) будет: mylist[[1]][[2]], mylist[[2]][[2]], mylist[[3]][[2]], mylist[[4]][[2]], mylist[[5]][[2]] элементов.

До

Пятая позиция mynewlist (mynewlist[[5]][[1]]) будет: mylist[[1]][[5]],mylist[[2]][[5]],mylist[[3]][[5]],mylist[[4]][[5]],mylist[[5]][[5]] элементов.

Другими словами, я хочу поместить каждый mylist[[i]][[1]]$a впозиция mynewlist[[1]][[1]];mylist[[i]][[1]]$b в позиции mynewlist[[1]][[2]] и так далее до mylist[[i]][[1]]$j в позиции mynewlist[[1]][[10]]

Это должен быть мой вывод для первой позиции mynewlist:

#[[1]]
#[1] 2 3 4 5
    2  5 48  4
    2  3  4 35
   23  3  4 85
   2  3 48  5

Любая помощь?

1 Ответ

0 голосов
/ 24 августа 2018

Мы можем использовать transpose

library(dplyr)
out <- mylist %>% 
           purrr::transpose(.)
out[[1]]
#[[1]]
#[1] 2 3 4 5

#[[2]]
#[1]  2  5 48  4

#[[3]]
#[1]  2  3  4 35

#[[4]]
#[1] 23  3  4 85

#[[5]]
#[1]  2  3 48  5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...