如何从符合模式的矢量中删除所有元素?

问题描述:

ncvars = c("prate", "arate", "wpd", "Atm1", "Atm2", "area", "fC", bas__1", "bas__asssaa", "bas__Clow", "bas__g2333e", "baser__arge", "bas__Aow", "bas__Aass") 

现在,我想删除那些如何从符合模式的矢量中删除所有元素?

  • 名称完全area
  • 匹配此字符串bas__

我怎样才能做到这一切的元素?


试用

patterns <- c("bas__", "area") 
ncvars %>% 
    filter(.,grepl(paste(patterns, collapse="|"))) 
+0

你尝试过这么远吗? –

+0

新增........... – maximusdooku

+1

你可以输入你的数据吗? –

你可以只否定grepl!也正好相匹配,需要^..$锚字符串的开头(^)和结束($)匹配:

ncvars[!grepl('^area$|bas__', ncvars)] 

ncvars 
# [1] "prate"  "arate"  "wpd"   "Atm1"  "Atm2"  "area"  "fC"   "bas__1"  
# [9] "bas__asssaa" "bas__Clow" "bas__g2333e" "baser__arge" "bas__Aow" "bas__Aass" 
ncvars[!grepl('^area$|bas__', ncvars)] 
# [1] "prate"  "arate"  "wpd"   "Atm1"  "Atm2"  "fC"   "baser__arge" 
+0

^和$周边区域是什么意思?谢谢。 – maximusdooku

+0

它们匹配字符串的开头和结尾。所以'^ area $'完全匹配'area'而不是一个子字符串。 – Psidom

+0

啊。非常感谢! – maximusdooku

一个tidyverse解决方案:

library(stringr) 
str_replace(ncvars, pattern = "^area$|^bas__", replacement = "") 
# [1] "prate"  "arate"  "wpd"   "Atm1"  
# [5] "Atm2"  ""   "fC"   "1"   
# [9] "asssaa"  "Clow"  "g2333e"  "baser__arge" 
# [13] "Aow"   "Aass"