我創建的文件列表:R!刪除列表從特定字母開頭的元素
folder_GLDAS=dir(foldery[numeryfolderow],pattern="_OBC.asc",recursive=F,full.names=T)
不幸的是,一個額外的對象,我想刪除(文件名以"NOWY" - NOWYevirainf_OBC.asc
開頭)。
如何在列表中找到該元素的索引以通過鍵入以將其刪除: folder_GLDAS<=folder_GLDAS[-to_remove]
??
我創建的文件列表:R!刪除列表從特定字母開頭的元素
folder_GLDAS=dir(foldery[numeryfolderow],pattern="_OBC.asc",recursive=F,full.names=T)
不幸的是,一個額外的對象,我想刪除(文件名以"NOWY" - NOWYevirainf_OBC.asc
開頭)。
如何在列表中找到該元素的索引以通過鍵入以將其刪除: folder_GLDAS<=folder_GLDAS[-to_remove]
??
假設你的列表是一維的,這樣的事情應該工作:
*folder_GLDAS<-*folder_GLDAS[substr(*folder_GLDAS,1,4)!='NOWY']
過濾器使用正則表達式。
folder_GLDAS <- folder_GLDAS[!grepl("^NOWY", folder_GLDAS)]
(你也可以換grepl
爲str_detect
在stringr
)
實際上,你可以做出爲此在「_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」)。