【问题标题】:Removing consecutive duplicate symbols from a vector从向量中删除连续的重复符号
【发布时间】:2021-10-04 22:28:24
【问题描述】:

我有一个向量,其中充满了分隔有效字符的+ 符号。我需要删除重复的、连续的 + 符号,但保留用作分隔符的非连续 + 符号。

下面是一个示例数据集:

df <- data.frame(name = c(A="a+++a+b+c++++d+d+d"))

                name
  a+++a+b+c++++d+d+d

以下是所需的输出:

           name
  a+a+b+c+d+d+d

下面是我尝试用+ 替换重复的++ 符号的代码。

sub("++", "+", df$name)

当我尝试这个时,我得到以下错误:

Error in sub("++", "+", df$name) : 
  invalid regular expression '++', reason 'Invalid use of repetition operators'
In addition: Warning message:
In sub("++", "+", df$name) :
  TRE pattern compilation error 'Invalid use of repetition operators'

【问题讨论】:

标签: r regex string


【解决方案1】:

你可以试试下面的:

df <- df %>% mutate(name=gsub("\\++","\\+",name))

输出:

           name
A a+a+b+c+d+d+d

【讨论】:

  • 嗨@MaxMiak。非常感谢!它成功了。此外,添加了以下代码以确保删除前导和尾随 + 符号:df &lt;- df %&gt;% mutate(name=gsub("\\++","\\+",name)) %&gt;% mutate(name=gsub('^\\+|\\+$', '',name))
  • 非常欢迎,如果对你有用,你可以✅接受我的回答
【解决方案2】:

sapply 应该可以工作

df$name <- sapply(df,  function(x) { gsub("\\++", "\\+", x) })

【讨论】:

  • 请注意,“\\++”并不完全意味着两个加号。大于 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
相关资源
最近更新 更多