【问题标题】:Splitting data into chunks but with distance in between将数据拆分成块,但之间有距离
【发布时间】:2021-06-14 06:26:06
【问题描述】:

假设我有以下序列:

AAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG

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

'GGTGC' 、 'GGCTC' 、 'CCTGT' 、 'CCCAG' 等等直到最后。然后我想从粗体A到序列开头的意思得到相同的信息:

AAGCC、AAAAA、...

我该怎么做?

【问题讨论】:

    标签: r dataframe split partition seq


    【解决方案1】:

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

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

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

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

    数据

    str1 <- "AAAAAAAAAAAAGCCAGGTGCGGTGGCTCATGCCTGTAAGCCCAGCACTTTGGGAGGCCAAGGCAGGCGGATCACTAGAGGTCAG"
    

    【讨论】:

    • 非常感谢您的回复。在实际问题中,我想将其拆分为长度为 200 的窗口,中间有 50 个字符。在这种情况下如何避免使用点?
    • @A4747 你可以使用paste0("(?&lt;=", strrep(".", 200), ")", strrep(".", 50))
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多