Как я могу преобразовать список списков в DataFrame, где первым «слоем» списков должны быть строки?
myList = list(
list(name="name1",num=20,dogs=list("dog1")),
list(name="name2",num=13,dogs = list()),
list(name="name3",num=5,dogs=list("dog2","dog4"))
)
Моя первая идея заключалась в том, чтобы исключить элементы в "третьем слое".
myUnList = sapply(myList,function(x){y=x;y$dogs = unlist(y$dogs);y})
Я могу приготовить блюдо
tibble(myUnList)
# A tibble: 3 x 1
myUnList
<list>
1 <list [3]>
2 <list [2]>
3 <list [3]>
Обратите внимание: если бы у меня было myList[[1]]
для представления вектора name
, это было бы просто, но у меня возникли проблемы с тем, как привести в порядок данные, представленные другим способом. Я думал об использовании purrr
, чтобы «перевернуть» порядок.
Ожидаемый результат:
# A tibble: 3 x 3
names num dogs
<list> <list> <list>
1 <chr [1]> <dbl [1]> <list [1]>
2 <chr [1]> <dbl [1]> <list [0]>
3 <chr [1]> <dbl [1]> <list [2]>
Существуют ли другие типы структур данных, поддерживающие записи различной длины?