我的问题可能不清楚,所以我将用简单的例子来解释我的问题.

例如,有一个字符x = "AAATTTGGAA".

我想要达到的是,从x开始,用连续的字母,"AAA", "TTT", "GG", "AA",除以x.

然后,每个区块的唯一字母是"A", "T", "G", "A",所以预期输出是ATGA.

我该怎么得到这个?

我很抱歉,如果这是重复的,但我找不到关于这个问题.

推荐答案

下面是一个有用的正则表达式技巧方法:

x <- "AAATTTGGAA"
out <- strsplit(x, "(?<=(.))(?!\\1)", perl=TRUE)[[1]]
out

[1] "AAA" "TTT" "GG"  "AA"

这里使用的正则表达式模式表示在前后字符不同的任何边界处拆分.

(?<=(.))  lookbehind and also capture preceding character in \1
(?!\\1)   then lookahead and assert that following character is different

R相关问答推荐

使用long()在dØr中过滤后获取元素数量

Select R中列未排序的收件箱中的最后一个按顺序编号的列

图片中令人惊讶的行为

如何在热图中绘制一个图形,但在每个单元格中通过饼形图显示?

如何替换R中数据集列中的各种字符串

如何按排序顺序打印一个框架中所有精确的唯一值?

多重RHS固定估计

bslib::card_header中的shine::downloadButton,图标而不是文本

如何在R中对深度嵌套的tibbles中的非空连续行求和?

S用事件解决物质平衡问题

多个过滤器内的一个盒子在仪表板Quarto

以更少间隔的较小表中的聚合离散频率表

提取一个列表中单个列的重复观察结果R

线性模型斜率在减少原始数据时提供NA

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

我们如何在R中透视数据并在之后添加计算

将统计检验添加到GGPUBR中的盒图,在R

如何根据其他列中的两个条件来计算数据帧中的行之间的差异?

如何从嵌套数据中自动创建命名对象?在R中

计算多变量的加权和