如何在R语言中将包含子列表的嵌套列表转换为DataFrame?
解决嵌套列表转DataFrame的问题
你的错误原因是直接对最外层的df调用do.call(rbind.data.frame, df),而df是仅包含historicalStockList一个元素的列表,结构不匹配导致行名错误。需要先拆解嵌套结构,将每个公司的股票数据与对应symbol合并后再整合。
方法一:基础R实现
# 提取所有公司的列表数据 companies <- df$historicalStockList # 逐个处理每个公司的历史数据 processed_data <- lapply(companies, function(company) { # 将该公司的historical列表转为数据框 hist_df <- do.call(rbind.data.frame, company$historical) # 为每一行添加对应的公司symbol hist_df$symbol <- company$symbol hist_df }) # 合并所有公司的数据框 final_df <- do.call(rbind.data.frame, processed_data) # 重置行名避免混乱 rownames(final_df) <- NULL
方法二:tidyverse包实现(更简洁)
如果你习惯使用tidyverse工具链,可以用以下代码:
library(tidyverse) final_df <- df$historicalStockList %>% map_dfr(function(company) { # 将historical列表转为数据框并添加symbol列 company$historical %>% bind_rows() %>% mutate(symbol = company$symbol) })
两种方法最终都会得到包含所有公司历史数据的DataFrame,每行数据对应一个日期的股票记录,同时带有公司symbol标识。
内容的提问来源于stack exchange,提问作者Rakshu
相关产品推荐
相关产品推荐

