1

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

我想知道是否可能的解决方案是使用 strsplit by ),并检查是否有任何等效性,然后重新附加 ) 回来。这行得通吗?

前任。字符串:“abc def (foo)(foo) abc def”

4

2 回答 2

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'
于 2013-06-25T12:21:44.963 回答
2

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

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

高温高压

于 2013-06-25T12:45:03.050 回答