if语句只使用R中的特定文件名

时间:2012-05-14 11:40:43

标签: r if-statement grep

我正在编写一个函数,它将从特定目录中获取所有文件,然后对符合我标准的文件执行一些命令。其中一个标准是文件不应该具有名称“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) == 0length(grep(".*png", file)) < 1和类似的东西,但没有任何效果。任何想法出了什么问题?

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)
  }
}