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

如何修改R语言list.files规则,筛选含Weekly和grocery的CSV文件

如何用R筛选同时包含Weekly和grocery的CSV文件名?

我有一个存满CSV文件的文件夹,需要提取同时包含Weekly和grocery的文件名列表。示例文件名如下:

03_27_2023_Weekly_01_07_2018_grocery.csv
03_27_2023_Weekly_01_14_2018_stationary.csv
03_27_2023_Biweekly_01_07_2018_grocery.csv
03_27_2023_Biweekly_01_21_2018_grocery.csv
03_27_2023_Biweekly_01_07_2018_stationary.csv
03_27_2023_Biweekly_01_21_2018_stationary.csv

目前我用以下代码只能筛选出包含grocery的文件,请问怎么修改pattern参数来同时匹配两个关键词?

list.files(path = path[["files"]],   # 文件所在文件夹路径
           pattern = "_grocery.csv", # 需要修改的匹配规则
           full.names = TRUE)

解决方案

通用写法(不限制Weekly和grocery的顺序)

使用正则表达式的正向预查,确保两个关键词都存在,需要开启Perl兼容模式:

list.files(path = path[["files"]],
           pattern = "^(?=.*Weekly)(?=.*_grocery\\.csv).*$",
           full.names = TRUE,
           perl = TRUE)
  • (?=.*Weekly):检查文件名中是否包含Weekly
  • (?=.*_grocery\\.csv):检查文件名是否以_grocery.csv结尾(正则里.是特殊字符,需要用\\转义)
  • perl = TRUE:R默认正则不支持正向预查,必须开启这个参数才能生效

简化写法(已知Weekly在grocery前面)

如果确定文件名里Weekly一定出现在grocery相关内容的前面,可以用更简单的正则,不需要开启Perl模式:

list.files(path = path[["files"]],
           pattern = "Weekly.*_grocery\\.csv",
           full.names = TRUE)

这个规则会匹配所有包含Weekly,且后面跟着任意内容、最终以_grocery.csv结尾的文件名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:35:07