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

如何用R语言list.files()查找不以特定字符串开头的文件?

解决list.files()筛选非"CONVERTED"开头csv文件的问题

你的正则写法有误,导致匹配不到目标文件,下面提供两种可行的解决方法:

方法一:使用Perl风格正则(否定前瞻)

R的list.files()默认采用POSIX基本正则,不支持否定断言语法,需要开启perl=TRUE来启用Perl风格正则,写法如下:

x <- list.files(pattern = "^(?!CONVERTED).*\\.csv$", perl = TRUE)
  • ^(?!CONVERTED):断言字符串开头不紧跟"CONVERTED"
  • .*:匹配任意长度的任意字符
  • \\.csv$:精确匹配结尾的.csv(注意点号要转义,否则会匹配任意单个字符)

方法二:先获取所有csv再过滤

这种方法更直观,不容易写错正则:

# 先获取目录下所有csv文件
all_csv_files <- list.files(pattern = "\\.csv$")
# 过滤掉以"CONVERTED"开头的文件
x <- all_csv_files[!grepl("^CONVERTED", all_csv_files)]
  • grepl("^CONVERTED", all_csv_files):返回逻辑向量,标记哪些文件以"CONVERTED"开头
  • !取反,保留不符合该条件的文件

原代码失效原因

原正则^(!CONVERTED)*.csv存在逻辑错误:

  • 在POSIX基本正则中,!只是普通字符,没有"否定"的特殊含义
  • *是匹配前面的字符/组零次或多次,所以这个正则实际是匹配开头为!CONVERTED重复零次或多次,再接任意单个字符加csv的文件,自然匹配不到你需要的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:45:54