我有这个字符串:
seed_pattern <- "K?ED??HRDDKDKD?HE?REKE??DE?KKK"
给出另一个字符串
bb_seq <- "rhhhhitv"
我想要做的是通过保持bb_seq
的顺序来用bb_seq
中的字符替换?
,结果是:
?
的总长度保证与bb_seq
相同.
KrEDhhHRDDKDKDhHEhREKEitDEvKKK
我如何才能用R实现这一点?
我试过了,但失败了:
seed_pattern <- "K?ED??HRDDKDKD?HE?REKE??DE?KKK"
bb_seq <- "rhhhhitv"
sp <- seed_pattern
gr <- gregexpr("\\?+", sp)
csml <- lapply(gr, function(sp) cumsum(attr(sp, "match.length")))
regmatches(sp, gr) <- lapply(csml, function(sp) substring(bb_seq, c(1, sp[1]), sp))
sp
# KrEDrhhHRDDKDKDrhhhHErhhhhREKErhhhhitDErhhhhitvKKK
我对非正则表达式解决方案持开放态度.