r语言 - 追踪原始字符的位置



我正在尝试创建一个函数,在这里我可以拆分如下所示的字母序列。

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

最新更新