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

如何将含不同长度元素的列表转换为数据框?

实现方法

方法一:基础R内置函数stack()

这是最简洁的方式,stack()函数专门用来将命名列表转换为包含分组列和值列的数据框:

list1 <- 1:2
list2 <- 1:3
list3 <- c(10, 100)
mylist <- list(a = list1, b = list2, c = list3)

# 转换
result <- stack(mylist)
# 调整列名(可选,默认列名为ind和values)
colnames(result) <- c("value", "group")
# 查看结果
print(result)

输出结果:

value group
1     1     a
2     2     a
3     1     b
4     2     b
5     3     b
6    10     c
7   100     c

方法二:基础R手动拼接

如果需要更灵活的列名设置,可以用lapply遍历列表名,生成数据框后再合并:

result <- do.call(rbind, lapply(names(mylist), function(name) {
  data.frame(group = name, value = mylist[[name]])
}))

方法三:tidyverse工具包(purrr)

如果你习惯使用tidyverse生态,可以用purrr::map_dfr快速实现,.id参数用来指定分组列的名称:

library(purrr)
library(dplyr)

result <- map_dfr(mylist, ~data.frame(value = .x), .id = "group")

这三种方法都能得到你需要的格式,其中stack()是最轻量化的选择,不需要额外安装包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45