如何展开列表列?使用unnest()保留嵌套元素名称遇阻
解决方法:使用
unnest_wider()替代普通unnest() 你遇到的问题是因为普通的unnest()函数是用来将列表中的元素拆分为行的,它不会保留列表元素的名称。而你需要的是把命名列表/向量的元素扩展为列,这时候tidyr包中的unnest_wider()函数正好能满足需求。
完整代码示例
library(tidyverse) # 你的原始数据 original_df <- tibble( a = c('first', 'second'), b = list(c('colA' = 1, 'colC' = 2), c('colA'= 3, 'colB'=2)) ) # 转换为目标格式 result_df <- original_df %>% unnest_wider(b) # 查看结果 result_df
运行结果
# A tibble: 2 × 4 a colA colC colB <chr> <dbl> <dbl> <dbl> 1 first 1 2 NA 2 second 3 NA 2
原理说明
unnest_wider()会自动识别列表列中每个元素的名称(比如你的colA/colB/colC),将这些名称作为新的列名,同时把对应的值填充到对应的位置;对于某一行没有的元素,会自动用NA填充,完全符合你想要的输出格式。
内容的提问来源于stack exchange,提问作者Dambo
相关产品推荐
相关产品推荐

