在R中提取字符串中大写字母的简单方法
easy way to extract uppercase in string in R
我是 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
和 [refer 到它们(并且仅指向它们而不是字符串的其余部分!) =14=]。在替换子句中,我们还包括所需的 >
.
您似乎在寻找两个串联字符串中的突变,此函数应该可以解决您的问题:
extract_mutation <- function(text){
splitted <- strsplit(text, split = "/")[[1]]
pos <- regexpr("[[:upper:]]", splitted)
uppercases <- regmatches(splitted, pos)
mutation <- paste0(uppercases, collapse = ">")
return(mutation)
}
如果两个基础交易所总是在同一个指数,你也可以return如果你有兴趣的话:
position <- pos[1]
return(list(mutation, position))
而不是 return(mutation)
您还可以捕获前后跟有可选小写字符的 2 个大写字符以及中间的 /
。
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 demo。
整个字符串的精确匹配可以是:
^[a-z]([A-Z])[a-z]/[a-z]([A-Z])[a-z]$
我是 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
和 [refer 到它们(并且仅指向它们而不是字符串的其余部分!) =14=]。在替换子句中,我们还包括所需的 >
.
您似乎在寻找两个串联字符串中的突变,此函数应该可以解决您的问题:
extract_mutation <- function(text){
splitted <- strsplit(text, split = "/")[[1]]
pos <- regexpr("[[:upper:]]", splitted)
uppercases <- regmatches(splitted, pos)
mutation <- paste0(uppercases, collapse = ">")
return(mutation)
}
如果两个基础交易所总是在同一个指数,你也可以return如果你有兴趣的话:
position <- pos[1]
return(list(mutation, position))
而不是 return(mutation)
您还可以捕获前后跟有可选小写字符的 2 个大写字符以及中间的 /
。
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 demo。
整个字符串的精确匹配可以是:
^[a-z]([A-Z])[a-z]/[a-z]([A-Z])[a-z]$