如何从与模式匹配的向量中删除所有元素?

max*_*oku 3 r subset grepl

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

现在,我想删除所有元素

  • 正是名字 area
  • 匹配这个字符串 bas__

我怎样才能做到这一点?


审判

patterns <- c("bas__", "area")
ncvars %>%
  filter(.,grepl(paste(patterns, collapse="|")))
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 8

你可以只grepl!和来否定,也可以完全匹配,你需要^..$锚来匹配字符串的开始(^)和结束($):

ncvars[!grepl('^area$|bas__', ncvars)]
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)