如何将嵌套在tibble内部的tibble全部解嵌套为普通向量列?
问题原因
你遇到的情况是因为嵌套的是**数据框列(df-col)**而非列表列,unnest() 主要用于展开包含不等长元素的列表列,不适合这种和主表行数完全匹配的嵌套数据框场景,tidyr 提供了专门处理这类场景的 unpack() 函数。
解决方案
方法1:tidyverse 通用写法(推荐)
可以自动识别所有嵌套数据框列,一次性完成解嵌套,适配任意数量的嵌套列场景:
library(tidyverse) # 构造示例数据 data <- tibble(col1 = 1:5, col2 = data.frame(col3 = 1:5, col4 = 5:9)) # 解嵌套所有数据框列 data_unnested <- data %>% unpack(where(is.data.frame))
执行后得到的 data_unnested 就是完全展开的单层tibble,包含col1、col3、col4三个向量列。
方法2:基础R 解法
无需加载第三方包也可以实现:
# 基础R展开,转tibble可额外加as_tibble() data_unnested_base <- as_tibble(do.call(data.frame, data))
内容的提问来源于stack exchange,提问作者GiulioGCantone
相关产品推荐
相关产品推荐

