使用模式获取包含异常的文件列表

时间:2017-08-27 00:29:41

标签: r

仅使用pattern函数中的list.files()参数,如何获取文件列表,排除某些具有相似模式的文件?

假设我的工作目录中有这些文件:

med_t_1_1.csv, 01_t_1_1.csv, 02_t_1_1.csv, 03_t_1_1.csv,
med_t_2_1.csv, 01_t_2_1.csv, 02_t_2_1.csv, 03_t_2_1.csv

我想获取格式为 t_1_1 的文件,但是以 med 开头的文件:

01_t_1_1.csv, 02_t_1_1.csv, 03_t_1_1.csv

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式

S[grepl("(?<!med_)t_1_1", S, perl=TRUE)]
# "01_t_1_1.csv" "02_t_1_1.csv" "03_t_1_1.csv"

正则表达式的解释

(?<!med_) = (?<看后面,!不匹配,med_是字符串

  

查看与字符串med _

不匹配的字符串

t_1_1 = t_1_1是字符串

  

查找与t_1_1匹配的任何字符串

**其他例子

S1 <- c("med_t_1_1.csv", "S_t_1_1.csv", "04_t_1_1.csv")
S1[grepl("(?<!med_)t_1_1", S1, perl=TRUE)]
# "S_t_1_1.csv"  "04_t_1_1.csv"

答案 1 :(得分:2)

file_chrs <- c("med_t_1_1.csv", "01_t_1_1.csv", "02_t_1_1.csv", "03_t_1_1.csv",
               "med_t_2_1.csv", "01_t_2_1.csv", "02_t_2_1.csv", "03_t_2_1.csv")

file_chrs[grepl("\\d_t_1_1", file_chrs)] # \\d matches and digit [0-9]

# console
[1] "01_t_1_1.csv" "02_t_1_1.csv" "03_t_1_1.csv"

# so in your working directory
list.files( pattern = "\\d_t_1_1" )