распечатка списка при сохранении индексов - PullRequest
1 голос
/ 23 апреля 2019

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

l1 = list(integer(0), 11L, integer(0), integer(0), 11L, 11L, c(6L, 
36L), 16L, 16L, integer(0), integer(0))

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

df = data_frame(entry = c(2, 5, 6, 7, 7, 8, 9), element = c(11, 11, 11, 6, 
36, 16, 16))

так, например, здесь запись 7 появляется дважды, потому что в списке есть два элемента (6 и 36).

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

У нас может быть два варианта.Сделайте list именованным, enframe его tbl_df, а затем unnest list элемент.Элементы NULL будут автоматически удалены

library(tidyverse)
l1 %>% 
     set_names(seq_along(.)) %>% 
     enframe %>%
     unnest

Или после присвоения list, stack его 2-столбцовому data.frame

stack(setNames(l1, seq_along(l1)))[2:1]
1 голос
/ 23 апреля 2019

Решение «низкого уровня»:

data.frame(entry=rep(seq_along(l1),lengths(l1)),element=unlist(l1))
#  entry element
#1     2      11
#2     5      11
#3     6      11
#4     7       6
#5     7      36
#6     8      16
#7     9      16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...