2

我正在编写一个函数,该函数将从特定目录中获取所有文件,然后对那些符合我的条件的文件执行一些命令。标准之一是文件不应具有名称“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以及类似的东西,但没有任何效果。任何想法出了什么问题?

4

1 回答 1

2

using 怎么样grepl,它返回一个关于模式是否出现在相关字符串中的逻辑:

!grepl(".*png", file)

我还将更改正则表达式以专门在文件名末尾查找“.png”,使用".*\\.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)
  }
}
于 2012-05-14T11:54:40.177 回答