1

有没有办法(使用正则表达式gsub或其他方式)从字符串中删除重复?

本质上:

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

3 回答 3

3

一种明显的方法是strsplit使用绳子,获取unique绳子并将它们缝合在一起。

paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
于 2013-07-02T06:55:50.507 回答
2

你也可以使用stringr::str_extract_all

require(stringr)  
unique(unlist(str_extract_all(a, '\\w+')))
于 2013-07-02T07:01:22.337 回答
0

您也可以基于 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"

hth

于 2013-07-02T07:25:16.043 回答