R中的字符串编辑 - 取出重复

时间:2013-06-25 10:35:37

标签: string r repeat

我正在处理R中的一些字符数据,并且我有一些部分在字符串的中间有(foo)(foo)。反正是自动找到那些重复,并删除它们(将它们表示为(foo)在同一位置)?

我想知道一个可能的解决方案是使用strsplit by),并检查是否有任何等价,然后重新加载)。这会有用吗?

实施例。 string:“abc def(foo)(foo)abc def”

2 个答案:

答案 0 :(得分:3)

您可以在R中使用perl正则表达式替换,如下例所示:

test <- "abc def (foo)(foo) abc def"
gsub('(\\(\\w+\\))\\1','\\1',test,perl=TRUE)

或者,您可以预先运行perl one-liner来清理数据:

echo "abc def (foo)(foo) abc def\n" | perl -ne 's/(\(\w+\))\1/$1/gi;print'

答案 1 :(得分:2)

这里有可能只保留序列中的第一个重复元素:

gsub("(.+)\\1+","\\1", x, perl=T)

HTH