【发布时间】:2013-07-02 06:51:25
【问题描述】:
有什么方法(使用正则表达式,如gsub 或其他方式)从字符串中删除重复项?
基本上:
a = c("abc, def, def, abc")
f(a)
#[1] "abc, def"
【问题讨论】:
有什么方法(使用正则表达式,如gsub 或其他方式)从字符串中删除重复项?
基本上:
a = c("abc, def, def, abc")
f(a)
#[1] "abc, def"
【问题讨论】:
一个明显的方法是strsplit 字符串,得到unique 字符串并将它们拼接在一起。
paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
【讨论】:
你也可以使用stringr::str_extract_all
require(stringr)
unique(unlist(str_extract_all(a, '\\w+')))
【讨论】:
您也可以基于 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"
第
【讨论】: