例如,有字符x = "AAATTTGGAA"。
我想要实现的是,从,由连续字母x分割, 。x"AAA", "TTT", "GG", "AA"
然后,每个块的唯一字母是"A", "T", "G", "A",因此预期输出是ATGA。
我应该如何得到这个?
这是一个有用的正则表达式技巧方法:
x <- "AAATTTGGAA"
out <- strsplit(x, "(?<=(.))(?!\\1)", perl=TRUE)[[1]]
out
[1] "AAA" "TTT" "GG" "AA"
Run Code Online (Sandbox Code Playgroud)
这里使用的正则表达式模式表示在前后字符不同的任何边界处进行分割。
(?<=(.)) lookbehind and also capture preceding character in \1
(?!\\1) then lookahead and assert that following character is different
Run Code Online (Sandbox Code Playgroud)