R语言:如何将嵌套列表展开为键重复的长格式数据框?
解决方案
首先需要注意:你原代码中用c()定义my_list会导致所有子向量被合并成一个单一原子向量,无法保留嵌套结构,正确的列表定义应该用list()。
以下是两种实现长格式数据框的方法:
方法1:使用tidyverse工具链(enframe + unnest)
# 正确定义嵌套列表 my_list <- list(1 = c(23,35,46,72,81), 2 = c(319,52,91,110), 3 = c(67,101), 4 = c(125,145,15)) library(tidyverse) # 先将列表转为带嵌套列的数据框,再展开嵌套列 df <- enframe(my_list, name = "Column A", value = "Column B") %>% unnest(Column B)
执行后得到的df就是你期望的长格式,示例输出片段:
| Column A | Column B |
|---|---|
| 1 | 23 |
| 1 | 35 |
| 1 | 46 |
| 1 | 72 |
| 1 | 81 |
| 2 | 319 |
方法2:使用base R(无需额外包)
利用stack()函数直接将嵌套列表转为长格式,再调整列名和顺序:
# 正确定义嵌套列表 my_list <- list(1 = c(23,35,46,72,81), 2 = c(319,52,91,110), 3 = c(67,101), 4 = c(125,145,15)) # stack自动生成values(数值)和ind(键)两列 df <- stack(my_list) # 重命名列并调整顺序 names(df) <- c("Column B", "Column A") df <- df[, c("Column A", "Column B")]
内容的提问来源于stack exchange,提问作者user20388122
相关产品推荐
相关产品推荐

