R语言如何读取多个分号分隔txt文件并合并为单个data.table
错误原因
你当前生成的temp列表存储的是文件名字符串,并非导入后的数据集对象,rbindlist要求输入列表的每个元素必须为data.frame/data.table/list类型,因此触发类型不匹配报错。
正确实现方案
方案1:data.table体系(效率最高,推荐)
rbindlist搭配fread是目前处理多文本文件导入合并的最优方案之一,尤其适合大文件、多文件场景,性能远高于基础包实现:
# 加载data.table包 library(data.table) # 1. 获取目标文件夹下所有文件的完整路径 # full.names=TRUE 保证返回绝对路径,避免工作目录不匹配导致读入失败 file_list <- list.files(path = "F:/Desktop/data", full.names = TRUE) # 2. 批量读入所有分号分隔的txt文件 dt_list <- lapply(file_list, function(path) { fread(file = path, sep = ";") }) # 3. 合并为单个data.table final_dt <- rbindlist(dt_list, fill = FALSE, idcol = NULL) # 如需转为普通data.frame,执行以下代码即可 # final_df <- as.data.frame(final_dt)
方案2:tidyverse体系(代码更简洁)
如果习惯用tidyverse语法,也可以用purrr::map_dfr一键完成导入合并:
library(tidyverse) final_df <- list.files(path = "F:/Desktop/data", full.names = TRUE) %>% map_dfr(~ read_delim(.x, delim = ";", show_col_types = FALSE))
内容的提问来源于stack exchange,提问作者Eric Boorman
相关产品推荐
相关产品推荐

