如何 gsub 连续第二个字符

How to gsub second character in a row

我正在尝试对连续的第二个字符进行 gsub。我觉得我很接近,但我似乎无法弄清楚。我尝试阅读它并查看其他示例。我好像想不通

这是我正在尝试的

df3 <- c("ATG")
df4 <- gsub('^.{0,2}', 'A', df3)
df5 <- gsub('^.{0,2}', 'T', df3)
df6 <- gsub('^.{0,2}', 'G', df3)
df7 <- gsub('^.{0,2}', 'C', df3)

这就是我想要的输出结果

AAG
ATG
AGG
ACG

但目前的输出是这样的

AG
TG
GG
CG

我觉得我很接近,但我似乎无法弄清楚

是否必须 gsub

substr 可以轻松获取第二个元素

substr(df3, start = 2, stop = 2).

substr(df3, start =  2, stop = 2) <- "A"

分配所需的字符。

你可以试试:

gsub("^(.).{1}", "\1A", df3)

(.) 获取第一个字符作为要提取的组 - 与 \1 匹配。 然后 .{1} 获取下一个字符。