2017-08-27 50 views
1

例外從list.files()功能只使用pattern說法我怎麼能拿排除與類似的模式有些文件的文件列表清單?獲取文件的使用模式

比方說,我有我的工作目錄此文件:

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但與啓動一個配有文件:

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

回答

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") 
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" 
相關問題