在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]$