追踪原始角色所在的位置

Tracing where the original character was

我正在尝试创建一个函数,我可以在其中拆分一系列字母,如下所示。

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