R中的列表到数据帧的转换:保留列表索引

Koo*_*133 3 r dataframe

我正在使用R将字符向量列表转换为数据框。如何将列表索引也转换为数据框?

list1 = list(c('kip','kroket'),'ei','koe')

print(list1)
##[[1]]
##[1] "kip"    "kroket"

##[[2]]
##[1] "ei"

##[[3]]
##[1] "koe"

df = data.frame(col1 = unlist(x))

print(df)
##   col1
##1    kip
##2 kroket
##3     ei
##4    koe
Run Code Online (Sandbox Code Playgroud)

首选输出如下所示:

##   col1    col2
##1    kip   1
##2 kroket   1
##3     ei   2
##4    koe   3
Run Code Online (Sandbox Code Playgroud)

Sot*_*tos 5

通过R的想法,

data.frame(v1 = unlist(list1), v2 = rep(seq(length(list1)), lengths(list1)))

#      v1 v2
#1    kip  1
#2 kroket  1
#3     ei  2
#4    koe  3
Run Code Online (Sandbox Code Playgroud)


Ron*_*hah 5

我们可以命名列表及其长度,然后使用stack

names(list1) <- seq_along(list1)
stack(list1)

#  values ind
#1    kip   1
#2 kroket   1
#3     ei   2
#4    koe   3
Run Code Online (Sandbox Code Playgroud)

或者另一个选择可以是使用enframeunnest

list1 %>% tibble::enframe() %>% tidyr::unnest()
Run Code Online (Sandbox Code Playgroud)


小智 5

整理法

list1 %>% map(~as_tibble(.)) %>% bind_rows(.id="index")

# A tibble: 4 x 2
  index value
  <chr> <chr>
1 1     kip
2 1     kroket
3 2     ei
4 3     koe
Run Code Online (Sandbox Code Playgroud)