我正在处理 R 中的一些字符数据,并且我有一些部分在字符串的中间有 (foo)(foo)。反正有没有自动找到这些重复,并删除它们(将它们表示为 (foo) 在同一位置)?
我想知道是否可能的解决方案是使用 strsplit by ),并检查是否有任何等效性,然后重新附加 ) 回来。这行得通吗?
前任。字符串:“abc def (foo)(foo) abc def”
您可以在 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'
这里有可能只保留序列中的第一个重复元素:
gsub("(.+)\\1+","\\1", x, perl=T)
高温高压