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

R用lapply、list.files批量导入txt、csv文件报invalid 'description'错误如何解决

R批量导入txt/csv文件报错"Error in file(file, "rt") : invalid 'description' argument"的原因与解决办法

报错产生原因

  1. 路径参数设置错误:list.files函数中你设置了full.names = FALSE,该参数为FALSE时仅返回无路径前缀的纯文件名,若R当前工作目录和数据文件的实际存储目录不匹配,文件读写函数无法定位到目标文件,就会抛出路径无效的错误。
  2. 文件匹配规则错误:你写的pattern = ".txt|csv"是不符合需求的正则表达式:.在正则语法中代表任意字符,且你没有锚定文件名末尾,会误匹配所有文件名中包含txt、csv连续字符的文件,最终得到的文件列表可能和你预期的5个txt+1个csv的数量、排序完全不符。
  3. 硬编码取文件索引的风险:你直接用data[1:5]取txt文件、data[6]取csv文件,但list.files返回的文件名默认按字典序排序,不一定符合你预期的顺序;如果匹配到的文件总数不足6个,data[6]会返回NA值,传入读写函数就会直接触发该报错。

解决方法

  • 修正list.files的参数,将full.names设为TRUE,获取文件的完整绝对路径,彻底避免工作目录不匹配的问题
  • 修正正则匹配规则,改为pattern = "\\.(txt|csv)$":\\.转义后匹配后缀名前的点,$锚定文件名末尾,只会匹配后缀为txt、csv的文件
  • 放弃硬编码索引取文件,改为按后缀筛选文件,避免文件排序不符合预期的问题

修正后的可运行代码

# 获取所有符合要求的txt、csv文件的完整路径
all_data_files <- list.files(getwd(),  
                 pattern = "\\.(txt|csv)$",
                 full.names = TRUE,
                 recursive = FALSE)

# 按后缀分别筛选txt和csv文件
txt_file_list <- all_data_files[grepl("\\.txt$", all_data_files)]
csv_file_list <- all_data_files[grepl("\\.csv$", all_data_files)]

# 批量读入所有txt文件
data_appli <- lapply(txt_file_list, read.table, 
                    header = TRUE, dec = ".",
                    sep = "\t", quote = "\n", skip = 0)

# 读入csv文件并追加到列表(如果有多个csv也可以用lapply批量读)
GEU <- read.csv2(csv_file_list[1], row.names = 1, 
               stringsAsFactors = TRUE)
data_appli[[length(data_appli) + 1]] <- GEU

调试小技巧:运行读文件代码前可以先打印txt_file_list和csv_file_list,确认匹配到的文件数量、文件名和你预期的一致,避免误匹配冗余文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:04