在r中提取字符串大写字母的简单方法



我是初学者。

我有"cCt/cGt"我想把C和G提取出来写成C>G

test ="cCt/cGt"
str_extract(test, "[A-Z]+$")

试试这个:

gsub(".*([A-Z]).*([A-Z]).*", "\1>\2", test )
[1] "C>G"

在这里,我们在括号(...)中给出的捕获组中捕获大写字母的两次出现。这使得可以引用gsub的替换子句中使用反向引用\1\2来替换它们(并且只替换它们,而不替换字符串的其余部分!)在替换子句中,我们还包括所需的>

您似乎在两个连接的字符串中寻找突变,这个函数应该可以解决您的问题:

extract_mutation <- function(text){
splitted <- strsplit(text, split = "/")[[1]] 
pos <- regexpr("[[:upper:]]", splitted)
uppercases <- regmatches(splitted, pos)
mutation <- paste0(uppercases, collapse = ">") 
return(mutation)
}

如果两个基本交换总是在相同的索引,如果你感兴趣,你也可以返回位置:

position <- pos[1]
return(list(mutation, position))

代替return(mutation)

还可以捕获后面和前面的两个大写字符,然后是可选的小写字符和中间的/

test ="cCt/cGt"
res = str_match(test, "([A-Z])[a-z]*/[a-z]*([A-Z])")
sprintf("%s>%s", res[2], res[3])

输出
[1] "C>G"

查看R演示。


整个字符串的精确匹配可以是:

^[a-z]([A-Z])[a-z]/[a-z]([A-Z])[a-z]$

相关内容

  • 没有找到相关文章