You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用tidyr::unnest展开含vctrs_list_of类型列表列的数据框

解决tidyr::unnest处理vctrs_list_of类型列表列的报错问题

你遇到的这个报错是因为旧版本的tidyr::unnest(0.8.3.9000)对vctrs_list_of这种带类型约束的列表列支持不完善,无法正确识别列的内部类型,进而抛出类型不匹配的错误。下面提供两种可行的解决方案:

方案1:先转换为普通列表再unnest

我们可以先把vctrs_list_of类型的列转换为普通的列表类型,再用unnest展开,具体代码如下:

library(dplyr)
library(tidyr)

# 将目标列从vctrs_list_of转为普通列表
df_processed <- df %>%
  mutate(across(c(A, B, C, D), as.list))

# 执行展开操作
df_processed %>% unnest(cols = c(A, B, C, D))

运行后就能得到和purrr::pmap_dfr一致的展开结果:

# A tibble: 6 × 5
     ID     A     B     C     D
  <int> <dbl> <dbl> <dbl> <dbl>
1     1     9     3     6     5
2     1     8     5     5     3
3     2     7     2     7     4
4     2     6     6     6     1
5     3     6     1     8     6
6     3     9     5     7     5

方案2:升级tidyr到新版本

如果你的环境允许升级包,建议把tidyr升级到1.0.0及以上版本——后续版本的unnest已经原生支持vctrs系列的类型,不需要额外转换,直接执行你原来的代码就能成功:

# 先升级tidyr(如果未安装最新版)
# install.packages("tidyr")

# 直接使用unnest
df %>% unnest(cols = c(A, B, C, D))

这个方案更简洁,也能避免类型转换的额外步骤。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:54:19