没有模式字符串的子集字符串

时间:2018-11-01 15:16:32

标签: r stringr

我想要提取与给定模式不匹配的字符向量元素。参见示例:

x<-c("age_mean","n_aitd","n_sle","age_sd","n_poly","n_sero","child_age")
x_age<-str_subset(x,"age")
x_notage<-setdiff(x,x_age)

在此示例中,我要提取与模式“ age”不匹配的那些字符串。如何通过一次str_subset调用来实现?模式“不限年龄”的适当语法是什么?如您所见,我不是正则表达式的专家。感谢您的任何评论。

1 个答案:

答案 0 :(得分:0)

在这种情况下,似乎没有理由使用stringr(也许有效率)。您可以简单地使用grep

grep("age", x, invert = TRUE, value = TRUE)
# [1] "n_aitd" "n_sle"  "n_poly" "n_sero"

但是,如果您想坚持使用str_stringr,请注意(来自?str_subset

  

str_subset()是x [str_detect(x,pattern)]的包装,等效于grep(pattern,x,value = TRUE)。

所以

x[!str_detect(x, "age")]
# [1] "n_aitd" "n_sle"  "n_poly" "n_sero"

或者也是

x[!grepl("age", x)]
# [1] "n_aitd" "n_sle"  "n_poly" "n_sero"