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

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 AColumn B
123
135
146
172
181
2319

方法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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:45:43