2012-05-14 15 views
2

我正在寫一個函數,它將從一個特定的目錄中獲取所有文件,然後在符合我的條件的那些文件上執行一些命令。其中一個標準是該文件不應該具有「test.csv」的名稱,而另一個則不應該是png文件。現在,test.csv的工作正常,但我沒有讓R忽略png文件,所以不幸的是,只要工作目錄中有任何png文件,我的腳本就不能工作。下面是我的函數摘錄:如果語句只使用特定的文件名R

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和類似的事情,但毫無效果。任何想法出了什麼問題?

回答

2

如何使用grepl,它返回一個邏輯,以圖案是否與字符串中出現的問題:

!grepl(".*png", file) 

我也想改變正則表達式,專門尋找「巴紐」在文件名的末尾,使用".*\\.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) 
    } 
} 
+0

謝謝,這一個工程!我不知道'grepl'。 – AnjaM