我创建的文件列表: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”)。