【发布时间】:2022-01-17 12:18:49
【问题描述】:
我有一个嵌套的 tibble,我想取消嵌套。两个列表列(street_address 和 status)包含字符向量和列表,一个列表列(国家)仅包含字符向量。取消嵌套 tibble 时,会产生错误,这显然是由于这两种类型的条目的两列中同时存在字符向量和列表。
df <- tibble::tribble(
~id, ~country, ~street_address, ~status,
"2008-002231-32-GB", c("United Kingdom", "Netherlands"), list(c(NA, NA)), list(c(NA, NA)),
"2020-001060-28-SE", c("Denmark", "Denmark", "Denmark", "Denmark"), c("Palle Juul Jensens Blvrd 67", "Palle Juul Jensens Boulevard 99", "Palle Juul Jensens Blvrd 67", "Palle Juul Jensens Boulevard 99"), c("Non-Commercial", "Non-Commercial", "Non-Commercial", "Non-Commercial")
)
df
# A tibble: 2 × 4
id country street_address status
<chr> <list> <list> <list>
1 2008-002231-32-GB <chr [2]> <list [1]> <list [1]>
2 2020-001060-28-SE <chr [4]> <chr [4]> <chr [4]>
df %>%
unnest(cols = c(country, street_address, status))
# >Error: Can't combine `..1$street_address` <list> and `..2$street_address` <character>.
由reprex package (v2.0.1) 于 2021 年 12 月 14 日创建
似乎是列中存在列表条目是问题(全部采用 list(c(NA, NA)) 的格式)。一种选择可能是将这些观察结果更改为字符向量(或将它们设为 NA,因为它们似乎都是 NA),但我无法弄清楚如何做到这一点或这是否能解决问题。任何帮助将不胜感激。
请注意,这是一个更新的问题,因为我随问题提交的第一个数据是我使用 dpasta() 生成的,并不能很好地代表我的实际数据。
想要的结果应该是这样的:
# A tibble: 8 × 4
id country street_address status
<chr> <chr> <chr> <chr>
1 2020-001060-28-SE Denmark Palle Juul Jensens Blvrd 67 Non-Commercial
2 2020-001060-28-SE Denmark Palle Juul Jensens Boulevard 99 Non-Commercial
3 2020-001060-28-SE Denmark Palle Juul Jensens Blvrd 67 Non-Commercial
4 2020-001060-28-SE Denmark Palle Juul Jensens Boulevard 99 Non-Commercial
5 2008-002231-32-GB United Kingdom NA NA
6 2008-002231-32-GB Netherlands NA NA
>
``
【问题讨论】: