【问题标题】:Removing repeating substrings from within a string in R从R中的字符串中删除重复的子字符串
【发布时间】:2013-07-02 06:51:25
【问题描述】:

有什么方法(使用正则表达式,如gsub 或其他方式)从字符串中删除重复项?

基本上:

a = c("abc, def, def, abc")
f(a)
#[1] "abc, def"

【问题讨论】:

    标签: regex string r


    【解决方案1】:

    一个明显的方法是strsplit 字符串,得到unique 字符串并将它们拼接在一起。

    paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
    

    【讨论】:

    • 我认为这应该适用于我的目的。我会看看是否会发布任何其他解决方案,但谢谢。
    • 有没有办法用一个包含多个这样的字符串的向量来做到这一点?
    【解决方案2】:

    你也可以使用stringr::str_extract_all

    require(stringr)  
    unique(unlist(str_extract_all(a, '\\w+')))
    

    【讨论】:

      【解决方案3】:

      您也可以基于 gsub 使用此功能。我不能直接用一个正则表达式来做到这一点。

      f <- function(x) {
        x <- gsub("(.+)(.+)?\\1", "\\1\\2", x, perl=T)
        if (grepl("(.+)(.+)?\\1", x, perl=T))
          x <- f(x)
        else
          return(x)
      }
      b <- f(a)
      b
      [1] "abc, def"
      

      【讨论】:

        猜你喜欢
        • 2018-02-20
        • 2021-05-30
        • 2020-11-12
        • 1970-01-01
        • 2018-05-30
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        相关资源
        最近更新 更多