我是 R 的初學者程式員。
我有“cCt/cGt”,我想提取 C 和 G 并將其寫成 C>G。
test ="cCt/cGt"
str_extract(test, "[A-Z] $")
uj5u.com熱心網友回復:
嘗試這個:
gsub(".*([A-Z]).*([A-Z]).*", "\\1>\\2", test )
[1] "C>G"
在這里,我們在括號中給出的捕獲組中捕獲了兩次出現的大寫字母(...)
。這使我們能夠使用反向參考和. 在替換子句中,我們還包括了所需的.gsub
\\1
\\2
>
uj5u.com熱心網友回復:
您似乎在兩個連接的字串中尋找突變,這個函式應該可以解決您的問題:
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)
uj5u.com熱心網友回復:
您還可以捕獲 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 演示。
整個字串的精確匹配可能是:
^[a-z]([A-Z])[a-z]/[a-z]([A-Z])[a-z]$
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485672.html