2017-10-18 141 views
1
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

你可以輸入你的數據嗎? –

回答

3

你可以只否定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

1

一個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"