如何从符合模式的矢量中删除所有元素?
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="|")))
你可以只否定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"
^和$周边区域是什么意思?谢谢。 – maximusdooku
它们匹配字符串的开头和结尾。所以'^ area $'完全匹配'area'而不是一个子字符串。 – Psidom
啊。非常感谢! – 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"
你尝试过这么远吗? –
新增........... – maximusdooku
你可以输入你的数据吗? –