用正则表达式和 stringr 包。我用得不太好,下面这个代码可以凑合用。
x <- c('122AGACAGAACCUGGAGCCUGGGAUCCCAGGCUCCAGGUUCUGUCU7.6',
'223GACAGAACCUGGAGCCUGGGAAUUCCCAGGCUCCAGGUUCUGUC16.1',
'1233GGAGCCUGGGAAGGAAGCACCAUGGUGCUUCCUUCCCAGGCUCC10.6')
library(stringr)
loc <- sapply(x, function(x) range(str_locate_all(x, '[A-Z]')[[1]][, 1]))
y <- data.frame(n = substr(x, 1, loc[1,] - 1),
seq = substr(x, loc[1,], loc[2,]),
score = substr(x, loc[2,] + 1, nchar(x)))
y
n seq score
1 122 AGACAGAACCUGGAGCCUGGGAUCCCAGGCUCCAGGUUCUGUCU 7.6
2 223 GACAGAACCUGGAGCCUGGGAAUUCCCAGGCUCCAGGUUCUGUC 16.1
3 1233 GGAGCCUGGGAAGGAAGCACCAUGGUGCUUCCUUCCCAGGCUCC 10.6