you can do:
library(purrr);library(magrittr)
vec <- c("abcde", "abcdabcd", "apapap","aaaa","zzzz")
letters2counts <- 1:26
names(letters2counts) <- letters[1:26]
num_vec <- sapply(vec,strsplit,split="") %>% map(~letters2counts[.] %>% unname)
counts <- map(num_vec,~{u<-table(.);cbind(as.numeric(row.names(u)),as.numeric(u))})
fun1 <- function(x,n) {
x=x
used_inds <- NULL
for(i in unique(x)) {
nn <- n[,2][n[,1] %in% i]
if(nn == 0) next;
ind<- which(x %in% i) %>% setdiff(.,used_inds)
x[ind] <- x[ind]+0:(nn-1)
used_inds <- c(ind,used_inds)
}
x[x > 26] <- x[x > 26] - 26
return(x)
}
num_vec_calc <- Map(fun1,x=num_vec,n=counts)
map(num_vec_calc,~names(letters2counts)[.]%>% paste(.,collapse=""))
result:
$abcde
[1] "abcde"
$abcdabcd
[1] "abcdbcde"
$apapap
[1] "apbqcr"
$aaaa
[1] "abcd"
$zzzz
[1] "zabc"