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

R语言如何读取文件夹中stock前缀的最新txt文件或合并所有匹配文件

R语言股票数据文件读取方案

问题根因说明

你之前的代码匹配结果不符合预期,是因为R的list.files函数的pattern参数接收的是正则表达式,而非系统通配符,"*.txt"的写法无法限定文件名以stock开头。

1 筛选stock开头的txt文件

正确的筛选写法如下:

fileList <- list.files(pattern = "^stock.*\\.txt$")

正则规则解释:

  • ^ 匹配字符串开头,限定文件名必须以stock起始
  • .* 匹配任意长度的任意字符,适配文件名中的日期段
  • \\.txt 转义匹配后缀.txt,避免匹配到后缀不符合的文件
  • $ 匹配字符串结尾,保证文件后缀完全符合要求

2 完整需求实现代码

以下代码可实现「优先读取最新stock文件,读取失败则自动合并所有stock开头txt文件」的逻辑,可根据实际txt的分隔格式调整读取函数的参数:

# 筛选所有符合要求的stock类txt文件
file_list <- list.files(pattern = "^stock.*\\.txt$")

# 校验是否存在符合要求的文件
if (length(file_list) == 0) {
  stop("未检测到任何stock开头的txt数据文件")
}

# 按文件修改时间降序排序,取第一个为最新生成的文件
file_meta <- file.info(file_list)
sorted_files <- rownames(file_meta)[order(-file_meta$mtime)]
latest_file <- sorted_files[1]

# 优先读最新文件,报错则合并所有文件
stock_data <- tryCatch({
  # 若txt是制表符分隔用read.delim,逗号分隔用read.csv,可自行调整参数如header、sep等
  read.delim(latest_file, stringsAsFactors = FALSE)
}, error = function(e) {
  # 最新文件读取失败时遍历合并所有文件
  all_data <- data.frame()
  for (f in file_list) {
    tmp_data <- read.delim(f, stringsAsFactors = FALSE)
    all_data <- rbind(all_data, tmp_data)
  }
  return(all_data)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:48:00