2011-07-21 91 views
0

我創建的文件列表:R!刪除列表從特定字母開頭的元素

folder_GLDAS=dir(foldery[numeryfolderow],pattern="_OBC.asc",recursive=F,full.names=T) 

不幸的是,一個額外的對象,我想刪除(文件名以"NOWY" - NOWYevirainf_OBC.asc開頭)。

如何在列表中找到該元素的索引以通過鍵入以將其刪除: folder_GLDAS<=folder_GLDAS[-to_remove] ??

回答

1

假設你的列表是一維的,這樣的事情應該工作:

*folder_GLDAS<-*folder_GLDAS[substr(*folder_GLDAS,1,4)!='NOWY']

2

過濾器使用正則表達式。

folder_GLDAS <- folder_GLDAS[!grepl("^NOWY", folder_GLDAS)] 

(你也可以換greplstr_detectstringr

0

實際上,你可以做出爲此在「_OBC.asc」但是,不要所有的名字相匹配的(相當複雜的)PERL正則表達式模式從「NOWY」開始:"^(?!NOWY).*_OBC\\.asc$"

不幸的是,PERL語法不能被dir識別。但是你可以用grep這樣做:

folder_GLDAS <- dir(foldery[numeryfolderow],recursive=F,full.names=T) 
folder_GLDAS <- grep(folder_GLDAS, pattern="^(?!NOWY).*_OBC\\.asc$", perl=T, value=T) 

還要注意的是,「」在「_OBC.asc」中需要被轉義 - 否則你會匹配例如「_OBCXasc」)。