【发布时间】:2021-02-24 16:52:35
【问题描述】:
我的字符串包含很多重复项,如下所示:
tst <- c("C>C>C>B>B>B>B>C>C>*>*>*>*>*>C", "A>A>A", "*>B>B",
"A>A>A>A>A>*>A>A>A>*>*>*>*>A>A", "*>C>C", "A")
我想删除所有连续重复的大写和“*”字符,所以预期的结果是这样的:
[1] "CBC*C" "A" "*B" "A*A*A" "*C" "A"
我已经成功提取了重复的大写:
library(stringr)
unlist(str_extract_all(gsub(">", "", tst), "(.)(?=\\1)"))
[1] "C" "C" "B" "B" "B" "C" "*" "*" "*" "*"
但我有点卡在这里。我的预感是返回索引的函数which 可能会有所帮助,但在这种情况下不知道如何实现它。
有什么想法吗?
编辑:
我自己离解决方案并不远 - 只需使用 negative 前瞻(而不是积极的前瞻)就可以了:
str_extract_all(gsub(">", "", tst), "(.)(?!\\1)")
[[1]]
[1] "C" "B" "C" "*" "C"
[[2]]
[1] "A"
[[3]]
[1] "*" "B"
[[4]]
[1] "A" "*" "A" "*" "A"
[[5]]
[1] "*" "C"
[[6]]
[1] "A"
【问题讨论】: