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

如何从多层列表的每个子列表提取首条记录构建DataFrame

解决方法

方法1:Base R 简洁实现

用sapply批量提取目标值,再转为DataFrame:

# 提取每个子列表的首条记录
records <- sapply(lst, function(x) x[[1]][1])
# 构建DataFrame
df <- data.frame(record = records, stringsAsFactors = FALSE)

方法2:Tidyverse 风格(推荐)

如果习惯用tidyverse工具链,purrr::map_chr可以更直观地完成提取:

library(purrr)
df <- data.frame(record = map_chr(lst, ~ .x[[1]][1]), stringsAsFactors = FALSE)

修正你的循环代码

如果坚持用循环,需要先初始化存储向量,再赋值后转DataFrame(原代码错误在于直接给df[i]赋值,相当于逐个添加列而非元素):

# 初始化空向量
records <- character(length(lst))
# 循环提取
for(i in seq_along(lst)) {
  records[i] <- lst[[i]][[1]][1]
}
# 转为DataFrame
df <- data.frame(record = records)

运行以上任意方法后,df$record都会得到预期结果:"Class A", "Class B", "Class A", "Class D"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:25