【发布时间】:2022-01-10 15:50:24
【问题描述】:
我有这种类型的数据有多个列表列:
df <- structure(list(go = c("go after it", "here we go", "he went bust",
"go get it go", "i 'm gonna go", "she 's going berserk"), left = list(
"", "we", "he", c("", "it"), c("'m", "gonna"), "'s"), node = list(
"go", "go", "went", c("go", "go"), c("gonna", "go"), "going"),
right = list("after", "", "bust", c("get", ""), c("go", ""
), "berserk")), class = "data.frame", row.names = c(NA, -6L
))
我的目标是取消列出left、node 和right 这三个列。 unnest_longer 和 unnest_auto 似乎都是朝着正确方向迈出的一步,但我不确定如何从那里着手:
library(tidyr)
df %>%
unnest_longer(node) # or: unnest_auto(node)
# A tibble: 8 × 4
go left node right
<chr> <list> <chr> <list>
1 go after it <chr [0]> go <chr [1]>
2 here we go <chr [1]> go <chr [0]>
3 he went bust <chr [1]> went <chr [1]>
4 go get it go <chr [1]> go <chr [1]>
5 go get it go <chr [1]> go <chr [1]>
6 i 'm gon na go <chr [2]> gon na <chr [1]>
7 i 'm gon na go <chr [2]> go <chr [1]>
8 she 's going berserk <chr [1]> going <chr [1]>
预期结果是这样的:
# go left node right
# <chr> <chr> <chr> <chr>
# 1 go after it go after
# 2 here we go we go
# 3 he went bust he went bust
# 4 go get it go go get
# 5 go get it go it go
# 6 i 'm gon na go 'm gon na go
# 7 i 'm gon na go gon na go
# 8 she 's going berserk 's going berserk
【问题讨论】: