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 ワンライナーを実行して、事前にデータを消去することもできます。

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)

HTH

于 2013-06-25T12:45:03.050 に答える