我正在编写一个函数,它将从特定目录中获取所有文件,然后对符合我标准的文件执行一些命令。其中一个标准是文件不应该具有名称“test.csv”,而另一个标准不应该是png文件。现在,test.csv的工作正常,但我没有让R忽略png文件,所以不幸的是,只要工作目录中有任何png文件,我的脚本就不起作用了。以下是我的功能摘录:
file_list = list.files()
for (file in file_list){
if ((file != "test.csv") & (grep(".*png", file) != 1)){
my.file <- read.table(file)
}
}
我尝试了grep
命令的各种变体,例如grep(".*png", file) == 0
,length(grep(".*png", file)) < 1
和类似的东西,但没有任何效果。任何想法出了什么问题?
答案 0 :(得分:2)
如何使用grepl
,它会返回关于模式是否出现在相关字符串中的逻辑:
!grepl(".*png", file)
我还要更改正则表达式以专门查找&#34; .png&#34;在文件名的末尾,使用".*\\.png$"
因此您的代码可以更改为
for (file in file_list){
# if ((file != "test.csv") & !grepl(".*\\.png$", file)){
# Actually, you could move both tests into one call to grepl:
if(!grepl("test.csv|.*\\.png$", file)){
my.file <- read.table(file)
}
}