【问题标题】:subset strings without a pattern stringr没有模式字符串的子集字符串
【发布时间】:2018-11-01 15:16:31
【问题描述】:

我想提取与给定模式不匹配的字符向量的元素。看例子:

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 中实现这一点? “不年龄”模式的适当语法是什么。如您所见,我对正则表达式不是很熟悉。感谢任何 cmets。

【问题讨论】:

    标签: r stringr


    【解决方案1】:

    在这种情况下,似乎没有理由使用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"
    

    【讨论】:

      猜你喜欢
      • 2015-05-19
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2017-10-14
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多