我有这个向量
names <- c("wazzzap12waaazzzaaaaapffffm12323", "hell223231", "musssaaaa225")
Run Code Online (Sandbox Code Playgroud)
所以我想删除向量元素中至少包含三个“z”字母的数字的单词。
我们可以grep与 一起使用invert = TRUE。将正则表达式指定为z重复 3 次或更多{}
grep("z{3,}", names, invert = TRUE, value = TRUE)
[1] "hell223231" "musssaaaa225"
Run Code Online (Sandbox Code Playgroud)
或者使用str_subset来自stringr
library(stringr)
str_subset(names, "z{3,}", negate = TRUE)
[1] "hell223231" "musssaaaa225"
Run Code Online (Sandbox Code Playgroud)
如果我们只想从具有“z”重复的那些中删除非数字
i1 <- grep("z{3,}", names)
names[i1] <- gsub("\\D+", "", names[i1])
Run Code Online (Sandbox Code Playgroud)
-输出
> names
[1] "1212323" "hell223231" "musssaaaa225"
Run Code Online (Sandbox Code Playgroud)