我在目录中有一些文件,它们的扩展名都是一样的。我想列出所有文件,但稍后会想忽略一些包含某些字符串的文件名。我使用此答案using-r-to-list-all-files-with-a-specified-extension尝试了grepl
。
例如,在这个例子中,我想排除其中包含“B”的文件。试过了,
file_names <- c('AA','BA','KK','CB')
files <- paste0(file_names,'.txt')
Filter_files <- files[-grepl('.*B.txt|.B*.txt', files)]
Filter_files
"BA.txt" "KK.txt" "CB.txt"
有趣的是只排除了AA.txt
!
答案 0 :(得分:2)
这将有效:
file_names <- c('AA','BA','KK','CB')
files <- paste0(file_names,'.txt')
Filter_files <- files[!grepl('.*B.*\\.txt', files)]
Filter_files
## "AA.txt" "KK.txt"
以下是我所做的更改:
-
,而grepl
前面有!
,这会否定grepl
的结果(即TRUE
结果变为{{ 1}}和反之亦然。FALSE
指示的字符)(由.
符号表示)。这样,无论B是在文件名的开头还是结尾,它都被同样捕获。*
在正则表达式中具有“任意字符”的特殊含义,因此要在表达式中使用文字点,必须将其转义,因此在{txt扩展名之前.
。