将数据拆分成块,但之间有距离

Splitting data into chunks but with distance in between

假设我有以下序列:

A​​AAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG

从位置 A(在序列中以粗体显示)开始,我想将其拆分为长度为 5 个字符的块,但我希望这些块彼此相距 3 个字符,这意味着我想得到

'GGTGC' , 'GGCTC' , 'CCTGT', 'CCCAG' 等直到结束。然后我想从粗体 A 到序列开头的含义相同的信息:

A​​AGCC, AAAAA,...

我该怎么做?

我们可以使用正则表达式环视来进行拆分,即我们拆分为 3 个字符(. - 代表正则表达式中的任何字符),接续 5 个字符

strsplit(str1, "(?<=.....)...", perl = TRUE)[[1]]

或者如果我们想动态构造模式,请使用 strreppaste

n1 <- 200
n2 <- 50
pat <- paste0("(?<=", strrep(".", n1), ")", strrep(".", n2))

数据

str1 <- "AAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG"