【问题标题】:String Editing in R - Taking Out RepetitionR中的字符串编辑 - 消除重复
【发布时间】:2013-06-25 10:35:37
【问题描述】:

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

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

例如。字符串:“abc def (foo)(foo) abc def”

【问题讨论】:

  • 不清楚您的字符串看起来如何。最好给出这个字符串的例子。
  • 例如“abc def (foo)(foo) abc def”。但我的方法有效。先用空格分割,再用)分割,然后测试是否等价,删除第二个。
  • 您应该将此添加到您的问题中并添加预期结果。

标签: string r repeat


【解决方案1】:

您可以在 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'

【讨论】:

    【解决方案2】:

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

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

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 2021-05-30
      • 2020-05-21
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多