私は 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 ワンライナーを実行して、事前にデータを消去することもできます。
echo "abc def (foo)(foo) abc def\n" | perl -ne 's/(\(\w+\))\1/$1/gi;print'
ここでは、シーケンス内の最初の繰り返し要素のみを保持する可能性があります:
gsub("(.+)\\1+","\\1", x, perl=T)
HTH