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

如何在R语言中将含不等长元素的列表展开为DataFrame

将不等长元素的列表转换为DataFrame

我需要把一个包含不等长元素的列表转换成指定格式的DataFrame,示例列表如下:

a = c(1:9)
b = c(10:14)
test_list = list(a, b)
print(test_list)

#> [[1]]
#> [1] 1 2 3 4 5 6 7 8 9
#> 
#> [[2]]
#> [1] 10 11 12 13 14

期望得到的DataFrame结果如下:

desired_result = data.frame(var1 = c(rep(1,9), rep(2,5)),
                            var2 = c(1:14))
print(desired_result)

#>    var1 var2
#> 1     1    1
#> 2     1    2
#> 3     1    3
#> 4     1    4
#> 5     1    5
#> 6     1    6
#> 7     1    7
#> 8     1    8
#> 9     1    9
#> 10    2   10
#> 11    2   11
#> 12    2   12
#> 13    2   13
#> 14    2   14

解决方案

方法一:基础R实现

通过生成对应长度的组标识,再展开列表元素即可完成转换:

# 生成组编号,每个编号重复对应列表元素的长度
var1 = rep(seq_along(test_list), sapply(test_list, length))
# 展开列表得到数值列
var2 = unlist(test_list)
# 构建目标DataFrame
result = data.frame(var1, var2)
print(result)

方法二:tidyverse工具包实现

借助purrr和tibble可以更简洁地完成转换:

library(tidyverse)

result = test_list %>%
  imap_dfr(~ tibble(var1 = .y, var2 = .x))

print(result)

两种方法均能输出与期望一致的结果,可根据使用习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:24:58