我正在使用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)
通过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)
我们可以命名列表及其长度,然后使用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)
或者另一个选择可以是使用enframe和unnest
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)