我正在尝试创建一个函数,在这里我可以拆分如下所示的字母序列。
SCDKSFNRGECSCDKSFNRGECSCDKSFNRGEC
我希望能够在每个C之后分割序列,并且可以使用以下代码:
TestSequence <- "SCDKSFNRGECSCDKSFNRGECSCDKSFNRGEC"
test <- strsplit(TestSequence, "(?<=[C])", perl = TRUE )
打印在取消列表后提供了以下内容:"SC" "DKSFNRGEC" "SC" "DKSFNRGEC" "SC" "DKSFNRGEC"
然而,我希望能够跟踪输出C回到它在原始序列中的位置,这将是有用的,例如,如果每个字母都有一个我可以联系起来的数字,就像最初的SC,我可以说C是总序列中的第一个C,下一个SC将有一个序列中第三个C,等等。
有没有人能想到一种方法,能够追溯到分裂字符在原始序列中的位置?我相信一定有比我上面建议的更好的办法。
library(dplyr)
TestSequence <- "SCDKSFNRGECSCDKSFNRGECSCDKSFNRGEC"
fragments <- strsplit(TestSequence, "(?<=[C])", perl = TRUE) %>% unlist
data.frame(fragment = fragments) %>%
mutate(position = cumsum(nchar(fragment)))
输出:
## fragment position
## 1 SC 2
## 2 DKSFNRGEC 11
## 3 SC 13
## 4 DKSFNRGEC 22
## 5 SC 24
## 6 DKSFNRGEC 33