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

如何展平/展开R语言数据框中嵌入的嵌套列表列?

列表列数据框拆分行操作方案

针对存储变长向量的列表列数据框,无需手动切片或编写循环,使用向量化运算即可高效完成行展开,匹配目标输出结构。

方法1:tidyr 简洁实现(推荐)

直接调用unnest()函数完成嵌套列展开,非列表列会自动按对应长度重复匹配:

library(tidyr)
df2 <- unnest(df1, cols = C)

运行后输出结果和目标df2结构完全一致。

方法2:R基础包原生实现(无第三方依赖)

如果不想加载外部包,用内置向量化函数即可完成转换:

df2 <- data.frame(
  A = rep(df1$A, lengths(df1$C)),
  B = rep(df1$B, lengths(df1$C)),
  C = unlist(df1$C)
)

其中lengths()是R内置的高效函数,可一次性计算列表列每个元素的长度,配合rep()的向量化重复、unlist()的列表扁平化操作,全程为向量化运算,运行效率远高于循环或手动切片方案。

补充:单条语句构造示例df1的方法:定义列表列时用I()包裹列表对象,告知data.frame()不要对该列做维度拆解即可,代码如下:

df1 <- data.frame(
  A = c("able", "baker", "carr"),
  B = c("whiskey", "tango", "foxtrot"),
  C = I(list(14, c(2,18,32), c(10,6)))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:24:19