我创建了一个文件列表:
folder_GLDAS=dir(foldery[numeryfolderow],pattern="_OBC.asc",recursive=F,full.names=T)
不幸的是,我想删除一个额外的对象(文件名以"NOWY" - NOWYevirainf_OBC.asc
开头)。
如何在列表中找到此元素的索引以通过键入以下内容将其删除:
folder_GLDAS<=folder_GLDAS[-to_remove]
??
答案 0 :(得分:2)
使用正则表达式进行过滤。
folder_GLDAS <- folder_GLDAS[!grepl("^NOWY", folder_GLDAS)]
(您也可以在grepl
中交换str_detect
stringr
。)
答案 1 :(得分:1)
假设你的列表是一维的,那么这样的事情应该有效:
*folder_GLDAS<-*folder_GLDAS[substr(*folder_GLDAS,1,4)!='NOWY']
答案 2 :(得分:0)
你实际上可以创建一个(相当复杂的)PERL正则表达式模式,该模式匹配以“_OBC.asc”结尾的所有名称,但不要以“NOWY”开头:"^(?!NOWY).*_OBC\\.asc$"
不幸的是dir
无法识别PERL语法。但你可以像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”。