将数据拆分成块,但之间有距离
Splitting data into chunks but with distance in between
假设我有以下序列:
AAAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG
从位置 A(在序列中以粗体显示)开始,我想将其拆分为长度为 5 个字符的块,但我希望这些块彼此相距 3 个字符,这意味着我想得到
'GGTGC' , 'GGCTC' , 'CCTGT', 'CCCAG' 等直到结束。然后我想从粗体 A 到序列开头的含义相同的信息:
AAGCC, AAAAA,...
我该怎么做?
我们可以使用正则表达式环视来进行拆分,即我们拆分为 3 个字符(.
- 代表正则表达式中的任何字符),接续 5 个字符
strsplit(str1, "(?<=.....)...", perl = TRUE)[[1]]
或者如果我们想动态构造模式,请使用 strrep
和 paste
n1 <- 200
n2 <- 50
pat <- paste0("(?<=", strrep(".", n1), ")", strrep(".", n2))
数据
str1 <- "AAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG"
假设我有以下序列:
AAAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG
从位置 A(在序列中以粗体显示)开始,我想将其拆分为长度为 5 个字符的块,但我希望这些块彼此相距 3 个字符,这意味着我想得到
'GGTGC' , 'GGCTC' , 'CCTGT', 'CCCAG' 等直到结束。然后我想从粗体 A 到序列开头的含义相同的信息:
AAGCC, AAAAA,...
我该怎么做?
我们可以使用正则表达式环视来进行拆分,即我们拆分为 3 个字符(.
- 代表正则表达式中的任何字符),接续 5 个字符
strsplit(str1, "(?<=.....)...", perl = TRUE)[[1]]
或者如果我们想动态构造模式,请使用 strrep
和 paste
n1 <- 200
n2 <- 50
pat <- paste0("(?<=", strrep(".", n1), ")", strrep(".", n2))
数据
str1 <- "AAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG"