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

如何将R语言lapply遍历生成的各记录合并为最终数据框

解决方案

lapply运行后会返回一个由多个单行列数据框组成的列表,仅需要对这个列表做行合并即可得到统一的Final数据框,以下是两种常用实现方式:

方法1:基础R实现(无需额外安装包)

# 先将lapply的运行结果存储为列表对象
res_list <- lapply(files, function(x) {
        # 注意:原代码直接将文件名赋值给text会导致提取失败,这里补充读取文件内容的逻辑
        text <- paste(readLines(x, warn = FALSE), collapse = " ")
        
        policy_nr <- str_extract(text,"(?<=Contract Number \\: )\\d+")
        if( is.na(policy_nr) )
        {
          policy_nr <- str_extract(text,"(?<=Policy Number \\: )\\d+")
        }

        advisor_code <- str_extract(text,"(?<=Advisor Code \\: )\\d+")
        if( is.na(advisor_code) )
        {
          advisor_code <- str_extract(text,"(?<=Advisor Code: )\\d+")
        }       

        data.frame(PolicyNumber=policy_nr,AdvisorCode=advisor_code)
})

# 合并列表中的所有数据框
Final <- do.call(rbind, res_list)

方法2:tidyverse实现(兼容性更强)

如果已经安装dplyr包,使用bind_rows合并更稳定,不会因为个别数据框列缺失、列顺序不同报错:

library(dplyr)

# lapply逻辑和上面一致,直接合并列表即可
Final <- bind_rows(res_list)

补充说明

  • 判断NA时不需要写== TRUE,直接用is.na(变量名)即可,写法更简洁
  • 如果你的文本文件有特殊编码,可以在readLines中添加encoding参数调整读取规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:10