仅使用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
答案 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" )