Как превратить список из двух списков в один из двух? - PullRequest
2 голосов
/ 29 мая 2020

Итак, у меня есть список кривых, каждая кривая представлена ​​списком координат x и y. По сути, я хочу создать одну длинную кривую, объединив координаты x всех кривых и координаты y всех кривых в один список координат x и y.

Вот пример, предположим, у меня есть

toy <- list(list(c(1,2,3), c(4,5,6)), list(c(0,0), c(1,1)), list(c(1,2), c(1,2)))
toy

[[1]]
[[1]][[1]]
[1] 1 2 3

[[1]][[2]]
[1] 4 5 6


[[2]]
[[2]][[1]]
[1] 0 0

[[2]][[2]]
[1] 1 1


[[3]]
[[3]][[1]]
[1] 1 2

[[3]][[2]]
[1] 1 2

Как мне получить toy, чтобы он выглядел как

[[1]]
[[1]][[1]]
[1] 1 2 3 0 0 1 2

[[1]][[2]]
[1] 4 5 6 1 1 1 2

?

1 Ответ

2 голосов
/ 29 мая 2020

Вот один из вариантов с transpose

library(dplyr)
library(purrr)
transpose(toy)  %>%
       map(flatten_dbl) %>%
       list
#[[1]]
#[[1]][[1]]
#[1] 1 2 3 0 0 1 2

#[[1]][[2]]
#[1] 4 5 6 1 1 1 2

Или используя base R

list(lapply(asplit(t(simplify2array(toy)), 2), unlist))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...