在保留索引的同时不列出列表

时间:2019-04-23 17:13:12

标签: r list dataframe

我有一个列表,可以包含空条目,包含一个元素的条目和包含多个元素的条目。

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 个答案:

答案 0 :(得分:2)

我们可以有两个选择。将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 :(得分:1)

“低级”解决方案:

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