给定字符串:
string <- "AATTGGCGCTAG---AT-TTACG----"
我该如何根据一个或多个“-”的出现将字符串分割成多个部分呢?例如:
string1 <- "AATTGGCGCTAG"
string2 <- "---"
string3 <- "AT"
string4 <- "-"
string5 <- "TTACG"
string6 <- "----"
我尝试过:
strsplit(string, "[-]+")
然而,这并没有返回“-”字符串。
给定字符串:
string <- "AATTGGCGCTAG---AT-TTACG----"
string1 <- "AATTGGCGCTAG"
string2 <- "---"
string3 <- "AT"
string4 <- "-"
string5 <- "TTACG"
string6 <- "----"
我尝试过:
strsplit(string, "[-]+")
您可以将它们与其他内容相匹配
[^-]+|-+
请参见正则表达式演示。它匹配:
[^-]+
- 除-
外的1个或多个字符|
- 或-+
- 1个或多个-
字符。在R中:
x <- "AATTGGCGCTAG---AT-TTACG----"
regmatches(x, gregexpr("[^-]+|-+", x))
或者
library(stringr)
x <- "AATTGGCGCTAG---AT-TTACG----"
str_extract_all(x, "[^-]+|-+")
输出
## => [[1]]
## [1] "AATTGGCGCTAG" "---" "AT" "-" "TTACG" "----"
这里是针对您当前使用的 strsplit
的直接修复:
string <- "AATTGGCGCTAG---AT-TTACG----"
strsplit(string, "(?<=[^-])(?=[-])|(?<=[-])(?=[^-])", perl=TRUE)[[1]]
[1] "AATTGGCGCTAG" "---" "AT" "-" "TTACG"
[6] "----"